Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Где-то на форуме видел, а найти не могу :-( Позиционирование элементов формы.
 
 автор: Скорп   (03.07.2008 в 21:55)   личное сообщение
 
 

ну чтобы при выполнении определенного условия, координаты поля1 к примеру, были бы такие (оси икс и игрек)
ткните плиз носом, а...

  Ответить  
 
 автор: Скорп   (06.07.2008 в 00:45)   личное сообщение
 
 

м-даа..гемор
вычислять нужные мне координаты для всех элементов формы, проще застрелиться

может тогда что подскажете?
на форме куча вычислений в разных полях и по определенным условиям одни поля должны скрываться, другие отображаться на их месте
просто Visible=True или False можно сделать конечно, но тогда в конструкторе форм на одном и том же месте сидит несколько полей, вобщем полный абзац, хрен разберешься за что какое поле отвечает
вот и хотел командой Move задать координаты элементам, чтобы они прыгали на свои места
пригать то прыгают, но для сотни элементов я буду коодинаты высчитывать до конца своих дней

короче, хелп!)))
спасибо...

  Ответить  
 
 автор: Ю.Ш.   (06.07.2008 в 10:32)   личное сообщение
 
 

У меня лежит в стопочку в одном месте 12 полей.
Пользуюсь Visible=True или False. Для упрошения пишем п/п, которая сначала все поля делает невидимыми, а заданное поле - видимым.
Чтобы не путаться дайте самоговорящие названия полям.

  Ответить  
 
 автор: KrukVN   (06.07.2008 в 10:34)   личное сообщение
 
 


может тогда что подскажете?

Лучше не создавать 'сотню элементов' и потом ловить их за хвост. Тут другой подход нужен.
- Попробуйте использовать столько контролов, сколько их отображается на экране. Просто меняйте для них формулы вычисления на ходу (в зависимости от условия)
- Формулы же можно прописать в таблице
- Попробуйте еще использовать для этой цели грид (может даже АктивИкс кокой-нибудь) - есть вероятность, что получится красивше.

  Ответить  
 
 автор: Ю.Ш.   (06.07.2008 в 19:31)   личное сообщение
 
 

Ваш подход применим не всегда. Если для различных вычислений нужны все значения полей, то их хранить в форме обязательно. А если их нужно и показывать, а места на форме не хватает, то стопочка полей - единственный выход.

>Лучше не создавать 'сотню элементов' и потом ловить их за хвост.
А чем стопочка вам не нравится? Это универсальный и удобный подход.
Меньше полей, вы вообще говоря, можете делать только в простых случаях.

>Попробуйте использовать столько контролов, сколько их отображается на экране.
Это вообще неверный совет. У меня в программе 120 форм, и ВСЕ используют скрытые поля.
Все отображать на экране можно только в простейших случаях. Проблемы возникают при необходмости показа полей. Если места на экране не хватает, то универсальный и простой подход: стопочка полей с комбоксом, управляющим их показом.

  Ответить  
 
 автор: час   (06.07.2008 в 21:09)   личное сообщение
 
 

Интересная находка.........

  Ответить  
 
 автор: KrukVN   (06.07.2008 в 23:06)   личное сообщение
 
 


>Попробуйте использовать столько контролов, сколько их отображается на экране.
Это вообще неверный совет. У меня в программе 120 форм, и ВСЕ используют скрытые поля

Ну и хорошо. Просто видимо я подобные вопросы решаю иначе, так что ничего крамольного в своем совете не вижу.
Выбор - двигатель прогресса ;)

  Ответить  
 
 автор: FORMAT   (07.07.2008 в 10:32)   личное сообщение
 
 

Вешать конструктором на форму 100 элементов? - лучше сразу застрелиться.
У меня возникла необходимость использовать порядка 1800 лэйбов на форме - создавал их программно по мере необходимости. Координаты высчитывать с помощью .Left, .Top

  Ответить  
 
 автор: Ю.Ш.   (07.07.2008 в 18:11)   личное сообщение
 
 

>Вешать конструктором на форму 100 элементов? - лучше сразу
>застрелиться.
>У меня возникла необходимость использовать порядка 1800
>лэйбов на форме - создавал их программно по мере
>необходимости. Координаты высчитывать с помощью .Left, .Top

В формате MDE, ADE это невозможно. Если вам понадобятся эти форматы, а они на продвинутой стадии понадобятся, то интересно, пистолет какой марки вы предпочитаете?

  Ответить  
 
 автор: FORMAT   (07.07.2008 в 18:22)   личное сообщение
 
 

По этой причине я реализовал это в VB.Net

  Ответить  
 
 автор: KrukVN   (07.07.2008 в 21:57)   личное сообщение
 
 

to FORMAT
ай молодца
я некоторые задачи тоже в .net делаю - так ширше смотреть стал на некоторые проблемы

  Ответить  
 
 автор: Ю.Ш.   (08.07.2008 в 13:32)   личное сообщение
 
 

Это выход за пределы Асс, которому посвящен форум.
Для Асс, что я предложил - лучшее, и давно работает у многих без нареканий.

PS. Я тоже программирую на VB.net, но советы по нему даю в другом месте.

  Ответить  
 
 автор: KrukVN   (08.07.2008 в 14:08)   личное сообщение
 
 


Для Асс, что я предложил - лучшее

неплохо

  Ответить  
 
 автор: Bellerofont   (08.07.2008 в 22:59)   личное сообщение
 
 


В формате MDE, ADE это невозможно.

Можно использовать формы MSForms, которые позволяют создавать контролы "на лету".
Есть успешный опыт использования, несмотря на некоторые проблемы.

  Ответить  
 
 автор: Скорп   (08.07.2008 в 14:37)   личное сообщение
 
 

выбрал для себя немного другой подход
создал многостраничную форму(набор вкладок)
нужную мне вкладку делаю видимой, остальные скрываю
визуально для юзера одни поля пропадают, а на их месте появляются другие
ну да, пришлось некоторые поля, общие для нескольких вкладок дублировать на этих вкладках, но, имхо, это не так уж и криминально, зато я знаю и мне прозрачно тсзть, на какой вкладке что вычисляется...

  Ответить  
 
 автор: час   (08.07.2008 в 14:53)   личное сообщение
 
 

У кажного программера свой подход, выработан годами. Не обошлось без привычки - она играет немаловажную роль. Так же пристрастия и предпочтения. Так что скока народу столько стилей, подходов, методов.............
Спорить как лучше.......... лучше так, как Вам лучше - вот это лучше всего наилучшего Вам.

  Ответить  
 
 автор: KrukVN   (08.07.2008 в 16:03)   личное сообщение
 
 

Спорить как лучше.......... лучше так, как Вам лучше - вот это лучше всего наилучшего Вам.   

Согласен. Мир - дружба - жвачка

  Ответить  
 
 автор: Скорп   (08.07.2008 в 17:02)   личное сообщение
 
 

неее...я не спорил!!
куда мне до вас!?!)))
я не всегда понимаю о чем вы говорите, так что мне не до спора...
одна только фраза Format-a "а я запросы не конструирую в построителе запросов, я их пишу" повергла меня в шок))

как, не имея наглядного построителя запросов вообще можно понять, что тут!!!
SELECT [Сделанные расчеты].КодПросчета, [Вид работ].[Вид работ], Клиенты.Название_Фирмы, Клиенты.КодКлиента, [Сделанные расчеты].Тираж, [Цветность1 конверты].Цветность1, [Цветность2 конверты].Цветность2, [Сделанные расчеты].Примечание, [Основные сотрудники].Сотрудник, [Сделанные расчеты].Дата, [Сделанные расчеты].[Заказ состоялся], [Сделанные расчеты].[Когда состоялся?], [Сделанные расчеты].Отказ, [Сделанные расчеты].[Дата отказа], [Сделанные расчеты].Приоритет
FROM (((([Сделанные расчеты] LEFT JOIN [Вид работ] ON [Сделанные расчеты].[Вид Работ] = [Вид работ].[Код Вида Работ]) LEFT JOIN Клиенты ON [Сделанные расчеты].Фирма = Клиенты.КодКлиента) LEFT JOIN [Цветность1 конверты] ON [Сделанные расчеты].Цв1 = [Цветность1 конверты].Код) LEFT JOIN [Основные сотрудники] ON [Сделанные расчеты].Сотрудник = [Основные сотрудники].КодСотрудника) LEFT JOIN [Цветность2 конверты] ON [Сделанные расчеты].Цв2 = [Цветность2 конверты].Код
WHERE ((([Сделанные расчеты].[Заказ состоялся])=No) AND (([Сделанные расчеты].Отказ)=No));

  Ответить  
 
 автор: FORMAT   (08.07.2008 в 17:38)   личное сообщение
 
 

А вы свой запрос приведите к такому виду. И поймете, что не так все страшно.

SELECT

[Вид работ].[Вид работ],

Клиенты.Название_Фирмы,
Клиенты.КодКлиента,

[Цветность1 конверты].Цветность1,

[Цветность2 конверты].Цветность2,

[Основные сотрудники].Сотрудник,

[Сделанные расчеты].КодПросчета,
[Сделанные расчеты].Тираж,
[Сделанные расчеты].Примечание,
[Сделанные расчеты].Дата,
[Сделанные расчеты].[Заказ состоялся],
[Сделанные расчеты].[Когда состоялся?],
[Сделанные расчеты].Отказ,
[Сделанные расчеты].[Дата отказа],
[Сделанные расчеты].Приоритет

FROM

[Сделанные расчеты] LEFT JOIN [Вид работ] ON [Сделанные расчеты].[Вид Работ] = [Вид работ].[Код Вида Работ]
LEFT JOIN Клиенты ON [Сделанные расчеты].Фирма = Клиенты.КодКлиента
LEFT JOIN [Цветность1 конверты] ON [Сделанные расчеты].Цв1 = [Цветность1 конверты].Код LEFT JOIN [Основные сотрудники] ON [Сделанные расчеты].Сотрудник = [Основные сотрудники].КодСотрудника)
LEFT JOIN [Цветность2 конверты] ON [Сделанные расчеты].Цв2 = [Цветность2 конверты].Код

WHERE [Сделанные расчеты].[Заказ состоялся]=No AND [Сделанные расчеты].Отказ=No;

  Ответить  
 
 автор: FORMAT   (08.07.2008 в 17:49)   личное сообщение
 
 

И вдобавок: лучший способ изучить SQL- писать запросы руками.

  Ответить  
 
 автор: Скорп   (08.07.2008 в 21:49)   личное сообщение
 
 


приятно иметь дело с умными людьми)))
надеюсь, когда нибудь и я стану гуру))

п.с. я уже каждому тут на форуме по ящику пива должен
спасибо вам ребята от души!))

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList