Текущий архив: 2011.07.03;
Скачать: CL | DM;
ВнизКак выводить окно "Что нового?"? Найти похожие ветки
← →
Aleks (2011-03-26 01:00) [0]Здравствуйте мастера! Посоветуйте пожалуйста как выводить окно "Что нового?" при запуске программы? Пробовал добавить строку Form2.ShowModal(окно "Что нового?") на событие главной формы OnShow и OnActivate,но оно тогда появляется раньше главной формы,а нужно после ее показа. Как это можно сделать,нужно использовать таймер или есть элегантнее решение?
← →
Германн © (2011-03-26 02:03) [1]
> Здравствуйте мастера! Посоветуйте пожалуйста как выводить
> окно "Что нового?" при запуске программы? Пробовал добавить
> строку Form2.ShowModal(окно "Что нового?") на событие главной
> формы OnShow и OnActivate
PostMessage в OnActivate, имхо поможет.
Да и в OnShow тоже поможет.
← →
Aleks (2011-03-26 10:30) [2]Погуглив примера вывода инфо-окна с помощью PostMessage не нашел. Если можно примерчик дайте пожалуйста. Спасибо!
← →
Loginov Dmitry © (2011-03-26 11:00) [3]
> нужно использовать таймер или есть элегантнее решение?
Пользователю все равно по таймеру это сделано, или как-то более "элегантно".
Обычно в таких случаях делаю по таймеру. Кода меньше писать. Интервал - достаточно 1ms.
← →
sniknik © (2011-03-26 11:02) [4]> примера вывода инфо-окна с помощью PostMessage
а почему он должен быть? PostMessage оно не выводит окон, оно посылает сообщения. (что в посылке непонятного? примеров нет?)
твое инфо-окно, это всего лишь частный случай вывода его в этом сообщении, а не "авто"сообщениях методах.
т.е. разберись зачем/как работать с PostMessage, и напиши свой частный случай.
а то уже на каждый "чих" хотят пример инструкцию... так и вижу будущее - "обучение езды на велосипеде в красном смокинге и бабочке. опасайтесь подделок! если вы научитесь ездить в черном смокинге и без бабочки, вы ни за что не догадаетесь, что точно также можно ездить и в красном... а они сейчас в моде."
← →
Inovet © (2011-03-26 11:12) [5]> [3] Loginov Dmitry © (26.03.11 11:00)
> Обычно в таких случаях делаю по таймеру. Кода меньше писать.
Зачем делать кривость на пустом месте.
← →
sniknik © (2011-03-26 11:24) [6]> Зачем делать кривость на пустом месте.
вообще то, почти без разницы, таймер это тоже самое сообщение... т.е. по сути ничего не меняется.
можно считать это аналогом для "батонокидателей", которые привыкли буквально все делать с помощью визуальных компонент.
← →
Loginov Dmitry © (2011-03-26 11:36) [7]
> Зачем делать кривость на пустом месте
В чем в данном случае "кривость" (с таймером)? И чем эта кривость отличается от кривости с PostMessage? :)
В одном случае придется ставить непонятные интервалы, думать над вопросом "а почему 1мс?" и "а хватит ли 1мс?".
Во втором случае придется думать над вопросом "а какой код сообщения использовать?".
Хотя... со стороны конечно PostMessage выглядет более изящным, но по сути - разницы не будет.
← →
sniknik © (2011-03-26 12:05) [8]> "а хватит ли 1мс?".
даже 0мс хватит, если активировать в том же OnShow, та же посылка сообщения которое встанет в общую очередь.
> "а какой код сообщения использовать?".
чего тут думать? давно дан номер с которого начинаются юзерские ... типа + 101, 102 к нему, и т.д. по порядку. и нечего думать.
(101 а не 1 потому что, кто то из "пейсателей" компонент занял их для своих... ну и чтобы не путаться/думать а стоят ли/использую именно те, проще прибавить 100)
← →
Inovet © (2011-03-26 12:21) [9]> [6] sniknik © (26.03.11 11:24)
> [7] Loginov Dmitry © (26.03.11 11:36)
Ладно, не кривость, а просто лишнее.
← →
Aleks (2011-03-26 18:34) [10]Спасибо всем за советы!
← →
Игорь Шевченко © (2011-03-28 00:09) [11]
> Как это можно сделать,нужно использовать таймер или есть
> элегантнее решение?
Например такое:unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TfMain = class(TForm)
private
procedure CMVisibleChanged (var Message: TMessage); message CM_VISIBLECHANGED;
end;
var
fMain: TfMain;
implementation
uses WhatsNew;
{$R *.dfm}
{ TfMain }
procedure TfMain.CMVisibleChanged(var Message: TMessage);
begin
inherited;
if Visible then
fWhatsNew.ShowModal;
end;
end.unit WhatsNew;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TfWhatsNew = class(TForm)
Panel1: TPanel;
CheckBox1: TCheckBox;
end;
var
fWhatsNew: TfWhatsNew;
implementation
{$R *.dfm}
end.program WhatsNewForm;
uses
Forms,
main in "main.pas" {fMain},
WhatsNew in "WhatsNew.pas" {fWhatsNew};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.CreateForm(TfWhatsNew, fWhatsNew);
Application.Run;
end.
← →
Германн © (2011-03-28 03:15) [12]
> Игорь Шевченко © (28.03.11 00:09) [11]
А есть гарантия, что сообщение CM_VISIBLECHANGED будет передано данному окну только однажды?
Страницы: 1 вся ветка
Текущий архив: 2011.07.03;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.003 c