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

Вниз

Как отследить нажатие на TMenuItem   Найти похожие ветки 

 
Константин ©   (2004-07-09 09:11) [0]

Здравствуйте уважаемые мастера. Возможно мой вопрос покажется немножко (или множко) ламерским, но я раньше всегда программировал с использованием визуальных компонентов. Я написал такой вот код:

var
 year: array [2004..2100] of TMenuItem;
 month: array [1..12] of TMenuItem;
 day: array [1..31] of TMenuItem;
 i, j, o: integer;
begin
if prov1 = false then
begin
for i := 2004 to 2100 do  
 begin
 year[i] := TMenuItem.Create(Self);
 year[i].Caption := IntToStr(i);
 year[i].Name := "y" + IntToStr(i);
 MainMenu1.Items[1].Add(year[i]);
 if findcomponent("y" + inttostr(i)) then showmessage("fg");
   for j := 1 to 12 do
   begin
   month[j] := TMenuItem.Create(Self);  
   month[j].Name := "m" + inttostr(j)+ "y" + inttostr(i);
     case j of  
     1: month[j].Caption := "Январь";
     2: month[j].Caption := "Февраль";
     3: month[j].Caption := "Март";
     4: month[j].Caption := "Апрель";
     5: month[j].Caption := "Май";
     6: month[j].Caption := "Июнь";
     7: month[j].Caption := "Июль";
     8: month[j].Caption := "Август";
     9: month[j].Caption := "Сентябрь";
     10: month[j].Caption := "Октебрь";
     11: month[j].Caption := "Ноябрь";
     12: month[j].Caption := "Декабрь";
     end;
   MainMenu1.Items[1].Items[i-2004].add(month[j]);
   end;
 //отсеиваем года
 Query1.Active := false;
 Query1.SQL.Text := "SELECT *FROM chanel.db WHERE ODate BETWEEN " + """" + "01/01/" + inttostr(i) + """" + " AND " + """" + "12/31/" + inttostr(i) + """";
 Query1.Active := true;
 if Query1.RecordCount = 0 then year[i].Visible := false else year[i].visible := true;
 end;


И еще вопрос: Как видно из кода я делаю год, которого нет в БД невидимым. Можно более быстрым способом определить есть ли год в БД.


 
VMcL ©   (2004-07-09 10:04) [1]

>>Константин ©   (09.07.04 09:11)

>Как отследить нажатие на TMenuItem

Установить обработчик события OnClick.

P.S.
>if Query1.RecordCount = 0 then year[i].Visible := false else year[i].visible := true;

year[i].Visible := Query1.RecordCount <> 0;


 
Константин ©   (2004-07-09 10:16) [2]

Вот вот. Я про то же. Перечитал половину спарвки, но не нашел ничего дельного. Другой вопрос: Как именно установить этот обработчик события?


 
bar   (2004-07-09 10:33) [3]

Тип метода обработчика нажатия OnClick
TNotifyEvent = procedure(Sender: TObject) of object;
делаеш метод такого типа а затем присваиваеш его
MenuItem.OnClick:=имя_метода;

Примерно так

TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   MainMenu1: TMainMenu;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
    procedure xsdxx(Sender: TObject);// обработчик нажатия
 public
   { Public declarations }
   a:TMenuItem;

 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
    procedure TForm1.xsdxx(Sender: TObject);
    begin
    ..... код
    end;
   
procedure TForm1.FormCreate(Sender: TObject);
begin
a.OnClick:=xsdxx; // устанавливаем обработчик.
end;

а вопрос и правдо ламерский, но не очень множко. До орешника ему далеко :-))


 
Константин ©   (2004-07-09 10:44) [4]

Спасибо. Давно мне так все по полочкам не раскладывали.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.128 c
14-1091513636
olookin
2004-08-03 10:13
2004.08.22
Непроизвольная неправильная запись слов


4-1089283866
andrey__
2004-07-08 14:51
2004.08.22
Как принять сообщение в TServiceApplication посланное другим прил


1-1092048403
GuAV
2004-08-09 14:46
2004.08.22
Как вызвать из asm-кода опр-ную функцию из нескольких overloaded?


14-1091470204
Кириешки
2004-08-02 22:10
2004.08.22
Ассемблер


14-1091658588
Soft
2004-08-05 02:29
2004.08.22
Страна Советия.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский