Главная страница
    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.46 MB
Время: 0.038 c
14-1091175327
Al-
2004-07-30 12:15
2004.08.22
плеер для samsung dvd karaoke


14-1091392264
Evgenius
2004-08-02 00:31
2004.08.22
Самарские программеры откликнитесь plz


1-1092038078
bles
2004-08-09 11:54
2004.08.22
Проверить Edit1.Text - цифровой?


3-1090848339
sergg
2004-07-26 17:25
2004.08.22
Хранение изображений в БД


14-1091692869
Ivolg
2004-08-05 12:01
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский