Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2015, 13:15   #21
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Основная проблема - рукожопая прокладка между креслом и монитором.
спасибо за грубую интерпретацию моей подписи (синей) поржал

Аватар, никто фреймам в зал..у не прыгает, юзаем но с умом.
Речь идёт о том, что не каждая компонента корректно inheritid себя на фрейме. Например линейка последних ODAC плохо обновляется, в частности статические Filed-ы и обработчики описанные выше.
Если с форм завалить старый фрейм и по новому создать новый - всё корректно.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 03.08.2015, 16:36   #22
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от ResourceSpace Посмотреть сообщение
А я вот не понимаю - и зачем вам некие массивы окон?
Код:
Procedure EnableDoubleBuffered(C: TWinControl);
...
Потому как я не знаю сколько у меня будет окон, именно для этого и нужен массив.
Ваш код на стопицотмиллионов строчек...


Ну, а панелька нужна как нейкая рабочая область, где пользователь будет играться с созданными окнами.
Artsiom вне форума Ответить с цитированием
Старый 03.08.2015, 18:09   #23
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Потому как я не знаю сколько у меня будет окон, именно для этого и нужен массив.
только для этого?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.08.2015, 18:10   #24
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Ну, а панелька нужна как нейкая рабочая область, где пользователь будет играться с созданными окнами
тогда уж TScrollBox.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.08.2015, 19:31   #25
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
Лампочка

Цитата:
У них 3 простые функции, а у тебя портянка кода которая предназначена явно не для начинающего.
Цитата:
Ваш код на стопицотмиллионов строчек...
Да вы чего?) Вчитайтесь сперва что там показано. Там всё элементарно.
У меня тот же код, только чуть дополненный:
  • Функция EnableDoubleBuffered() включает DoubleBuffered у указанного оконного контрола (например у TForm) и у всех его дочерних контролов.
  • В класс TForm2 добавлена обработка события OnMoving, которая не даёт дочерним формам уезжать за пределы родителя.
  • По нажатию Button1Click случайным образом выбирается в каком окне создавать дочернее (Panel1 или Panel2 или Panel3 или Form1) и создаёт в нём дочернюю TForm2 (теми же 3 простыми функциями). Ну ещё раскрашивает и располагает в случайном месте.
Цитата:
Потому как я не знаю сколько у меня будет окон, именно для этого и нужен массив.
В VCL уже есть массивы дочерних окон, что я и показал:
  • По нажатию Button2Click пробегаемся по всем TForm2 которые лежат на Panel1.
  • По нажатию Button3Click пробегаемся по всем TForm2 которые были созданы по Button1Click где бы они не лежали.
Никакие дополнительные массивы вам и не требуются.
ResourceSpace вне форума Ответить с цитированием
Старый 03.08.2015, 20:06   #26
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Функция EnableDoubleBuffered() включает DoubleBuffered у указанного оконного контрола (например у TForm) и у всех его дочерних контролов.
Я сам так раньше говнокодил.
Код:
procedure SetDoubleBuffered(Parent: TWinControl; const DoubleBuffered: Boolean);
var
  Control: TControl;
  Index: Integer;
begin
  if not Assigned(Parent)
    then Exit;
  Parent.DoubleBuffered:= DoubleBuffered;
  for Index:= 0 to Parent.ControlCount - 1 do
   begin
     Control:= Parent.Controls[Index];
     if Control is TWinControl
       then SetDoubleBuffered(TWinControl(Control), DoubleBuffered); // Рекурсия !!!
   end;
end;
Но...
Это вам не это!
Изображения
Тип файла: png 280981.png (36.2 Кб, 30 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 03.08.2015 в 20:10.
min@y™ вне форума Ответить с цитированием
Старый 03.08.2015, 20:22   #27
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
Восклицание

Нафига там рекурсия, надо просто Components[], а не Controls[].
Не знаю как в вашей Делфи, а в 7-й включение DoubleBuffered у формы не включает его дочерним окнам. А дизайнтайм вообще нету такого свойства:
Изображения
Тип файла: jpg DBF.jpg (96.6 Кб, 53 просмотров)
ResourceSpace вне форума Ответить с цитированием
Старый 03.08.2015, 20:37   #28
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Нафига там рекурсия, надо просто Components[], а не Controls[].
А у меня там ваще TWinControl - не все потомки TControl имеют свойство DoubleBuffered.
А рекурсия - чтобы обойти всё дерево дочерних оконных элементов, а не только верхний уровень.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.08.2015, 20:49   #29
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

ResourceSpace ты это искал?
Изображения
Тип файла: jpg Рисуно3.jpg (32.4 Кб, 148 просмотров)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 03.08.2015, 20:57   #30
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
ResourceSpace ты это искал?
тут public, а не publidhed.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие родительской формы[Visual C#] spectrum988 Помощь студентам 2 08.02.2015 22:00
Запретить появление родительской формы Random2 Общие вопросы Delphi 9 12.01.2015 18:54
как сделать кнопку BitBtn, на одной дочерней форме, не активной при закрытии другой дочерней формы? yds-09 Общие вопросы Delphi 18 30.09.2013 20:42
Обновление дочерней формы Nulex Microsoft Office Access 1 05.09.2010 21:51
Обновление Родительской формы denver_ua Microsoft Office Access 0 26.03.2009 16:15