Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Динамическое PopupMenu   Найти похожие ветки 

 
2nd   (2004-12-21 20:15) [0]

Приветствую! Помогите советом. Есть DBGrid, есть PopupMenu. В меню перечислены поля грида и при выборе, поля в гриде скрываются/показываются. Естественно, содержимое грида будет меняться. Т.е. при заполнении DBGrid"а нужно переделывать меню и для каждого элемента писать обработчик вида N[i]Click -> DBGrid1.Fields[i].Visible := True/False; У кого-нибудь есть идеи как это сделать? Ничего в голову не приходит :(


 
2nd   (2004-12-21 20:17) [1]

Или какой-нибудь альтернативный вариант? Но, думается, с меню было бы красивее...


 
Hmm ©   (2004-12-21 20:46) [2]

Не вижу надобности делать именно "динамическое меню". Сделай "обыкновеное", выставляй галочки у видимого поля и убирай их у скрываемого... в чем проблемма?


 
2nd   (2004-12-21 23:33) [3]

Сейчас в гриде три стобца, через минуту - двадцать.


 
Dolt ©   (2004-12-22 01:26) [4]

Примерно так - естессна надо будет добавить проверок

procedure TForm1.PopupMenu1Popup(Sender: TObject);
Var
 i:integer;
 T:TMenuItem;
 s:String;
begin
 for i:=0 to PopupMenu1.Items.Count-1 do begin
   PopupMenu1.Items[i].Visible:=false;
   end;
 For i:=0 to DBGrid1.Columns.Count-1 do begin
   s:="mi"+DBGrid1.Columns[i].FieldName;
   T:=TMenuItem(PopupMenu1.FindComponent(s));
   IF T=nil Then begin
     t:=TMenuItem.Create(PopupMenu1);
     T.OnClick:=myClick;
     T.name:=s;
     T.Caption:=DBGrid1.Columns[i].Title.Caption;
     T.tag:=i;
     PopupMenu1.Items.Add(t);
     end;
   T.Visible:=true;
   T.Checked:=DBGrid1.Columns[i].Visible;
   end;
end;

procedure TForm1.myClick(Sender: TObject);
begin
   DBGrid1.Columns[TMenuItem(sender).Tag].Visible:=not TMenuItem(sender).Checked;
end;


 
Dolt ©   (2004-12-22 01:30) [5]

Тэкс... ошибка, tag нужно поставить после енда

--    skip    ----
     T.Caption:=DBGrid1.Columns[i].Title.Caption;
     PopupMenu1.Items.Add(t);
     end;
   T.tag:=i;
   T.Visible:=true;
--    skip    ----


 
2nd   (2004-12-22 02:10) [6]

2Dolt
Вот за это спасибо :)



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

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.029 c
4-1100860875
PRM
2004-11-19 13:41
2005.01.09
Как запустить xcopy


14-1103711268
AlexG
2004-12-22 13:27
2005.01.09
Глюк в Delphi 5!!! Нужна помощь!!!


1-1103649335
2nd
2004-12-21 20:15
2005.01.09
Динамическое PopupMenu


3-1102500768
Y
2004-12-08 13:12
2005.01.09
Как побороть ошибку


10-1077196271
Mr.Z
2004-02-19 16:11
2005.01.09
Help beginner, please?





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