Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.07.03;
Скачать: [xml.tar.bz2];

Вниз

Как выводить окно "Что нового?"?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.003 c
15-1300310991
Юрий
2011-03-17 00:29
2011.07.03
С днем рождения ! 17 марта 2011 четверг


15-1300699590
CRLF
2011-03-21 12:26
2011.07.03
Unicode, есть ли символ?


2-1301073992
awer
2011-03-25 20:26
2011.07.03
Не работает SetTimer ((


15-1300293054
boriskb
2011-03-16 19:30
2011.07.03
Браузеры + Adobe Flash Player


15-1300397390
Юрий
2011-03-18 00:29
2011.07.03
С днем рождения ! 18 марта 2011 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский