Главная страница
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.47 MB
Время: 0.053 c
14-1103617283
Prohodil Mimo
2004-12-21 11:21
2005.01.09
Где найти прогу для IR-пульта?


1-1103606356
KSergey
2004-12-21 08:19
2005.01.09
Наследование форм без репозитария


1-1103706352
Mishenka
2004-12-22 12:05
2005.01.09
Можно ли в ListBox сделать несколько Item ов не активными (типа E


3-1102486661
Владимир С.
2004-12-08 09:17
2005.01.09
возможно ли составить запрос?


14-1103692277
NewDelpher
2004-12-22 08:11
2005.01.09
Кто купил Юкос