Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 446
от 17.04.2006, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 308, Экспертов: 69
В номере:Вопросов: 3, Ответов: 5


Вопрос № 39978: Здравствуйте! Подскажите, пожалуйста, обработчик событий для нажатия на кнопку окна "Развернуть". Спасибо!...
Вопрос № 40003: Здравтсвуйте! Никак не могу сделатьтак , чтобы столбцы(их 5) DBGrid при перетасеивании Splitter`а, который отделяет ее от другой DBGrid, по ширине были все одинаковые(без отступов от края сетки, чтобы не было гориз. прокрутки). Буду очень признателен...
Вопрос № 40004: Доброе время суток! Очень прошу Вас о помощи тк самому эту программу написать не получается; На форму выводится системное время(ч м с) Если значение секунды кратное двум то рисуем вертикально 9 прямоугольников и закрашиваем их любыми...

Вопрос № 39.978
Здравствуйте! Подскажите, пожалуйста, обработчик событий для нажатия на кнопку окна "Развернуть". Спасибо!
Отправлен: 11.04.2006, 12:40
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгения
Здравствуйте, Андрющенко Вячеслав Васильевич!
Свойство WindowState wsMaximized – Окно первоначально будет развернуто во весь экран. wsMinimized – Окно первоначально будет свернуто в значок. wsNormal – Окно имеет те же размеры, что и во время разработки. Значение по умолчанию.
Может поможет?
Сильно не бейте...
Ответ отправила: Евгения (статус: 3-ий класс)
Ответ отправлен: 11.04.2006, 13:08

Отвечает: Полховский Александр Владимирович
Здравствуйте, Андрющенко Вячеслав Васильевич!
Можно обработать событие OnResize, выполнив проверку на уже описанное выше свойство. Но это обработчик изменения размера, любого изменения, не только развёртывания.
Это не единственный способ. Ещё можно обрабатывать сообщения, посылаемые окну. Вот простой пример:

private
{ Private declarations }
procedure WMSyscommand(var msg: TWmSysCommand); message WM_SYSCOMMAND;
procedure WMSize( Var msg: TWMSize ); Message WM_SIZE;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMSyscommand(var msg: TWmSysCommand);
begin
case (msg.CmdType and $FFF0) of
SC_MINIMIZE: begin
ShowMessage('Window about to MINIMIZE');
end;
SC_RESTORE : begin
ShowMessage('Window about to RESTORE');
end;
SC_MAXIMIZE: begin
ShowMessage('Window about to MAXIMIZE');
end;
end;
inherited;
end;

procedure TForm1.WMSize(var msg: TWMSize);
begin
If msg.Sizetype = SIZE_MAXIMIZED then
ShowMessage('Window MAXIMIZED');
inherited;
end;


Разберётесь, думаю.
---------
Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 11.04.2006, 16:30

Отвечает: Рубан Николай Николаевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Вот ответ!!!

Сообщение WM_SYSCOMMAND приходит перед выполнением соответствующей команды, что дает возможность переопределить код.

WM_SYSCOMMAND
uCmdType = wParam; // type of system command requested
xPos = LOWORD(lParam); // horizontal postion, in screen coordinates
yPos = HIWORD(lParam); // vertical postion, in screen coordinates

Соответственно для перехвата события разворачивания окна надо сделать:

type
TMain = class(TForm)
protected
procedure WMGetSysCommand(var message : TMessage);
message WM_SYSCOMMAND;
end;
...

// Обработка сообщения WM_SYSCOMMAND
procedure TMain.WMGetSysCommand(var message : TMessage) ;
begin
if (message.wParam = SC_MAXIMIZE) then
Main.Visible := False
else
inherited;
end;



---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 11:08


Вопрос № 40.003
Здравтсвуйте! Никак не могу сделатьтак , чтобы столбцы(их 5) DBGrid при перетасеивании Splitter`а, который отделяет ее от другой DBGrid, по ширине были все одинаковые(без отступов от края сетки, чтобы не было гориз. прокрутки). Буду очень признателен, если поможете!
Отправлен: 11.04.2006, 16:47
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Рубан Николай Николаевич
Здравствуйте, Андрющенко Вячеслав Васильевич!

Может вот такой ответ вам поможет

procedure TForm1.Splitter1Moved(Sender: TObject);
var n1,n2,i:integer;
begin
n1:=DBGrid1.Columns.Count;
for i:=0 to n1-1 do
DBGrid1.Columns.Items[i].Width:=(DBGrid1.Width div n1)-n1;
n2:=DBGrid2.Columns.Count;
for i:=0 to n2-1 do
DBGrid2.Columns.Items[i].Width:=(DBGrid2.Width div n2)-n2;
end;

---------
Мыслю - занчит существую (Декарт)
Ответ отправил: Рубан Николай Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.04.2006, 11:34


Вопрос № 40.004
Доброе время суток!
Очень прошу Вас о помощи тк самому эту программу написать не получается;

На форму выводится системное время(ч м с)
Если значение секунды кратное двум то рисуем вертикально 9 прямоугольников и закрашиваем их любыми цветами
Если значение секунды не кратное двум то рисуем горизонтально и закрашиваем их любыми цветами
Буду очень признателен!
Спасибо!
Отправлен: 11.04.2006, 16:49
Вопрос задал: Sexy (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Bochvarov NikB
Здравствуйте, Sexy!
А что тебе не ясно?
1. Как рисовать один прямоуголник?
2. Как сделать цикъл for?
3. Как вьибрать "любьие цвета"?
4. Или все?

Приложение:

Ответ отправил: Bochvarov NikB (статус: 7-ой класс)
Ответ отправлен: 11.04.2006, 17:08


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное