Главная страница
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.061 c
3-1102490625
LEH
2004-12-08 10:23
2005.01.09
Как лучше переносить BDE


3-1102488768
denis24
2004-12-08 09:52
2005.01.09
Работа с AdoQuery в отдельном потоке


1-1103598978
Sash
2004-12-21 06:16
2005.01.09
excel


4-1100988304
Юпитер
2004-11-21 01:05
2005.01.09
Поймать запуск EXE и переделать после загрузки в память


1-1103748902
RedLord
2004-12-22 23:55
2005.01.09
нарыл в инете примеры работы с ICQ а они не компилятся