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

Вниз

Добавление в MainMenu итема по имени другого итема. В чём ошибка?   Найти похожие ветки 

 
Кен   (2003-12-20 04:25) [0]

К итему ( пункту меню ) под именем m1 я хочу добавить новый пункт TESSST.

Код :

procedure TForm1.Button5Click(Sender: TObject);
var
Own, NewItem: TMenuItem;
begin

Own := TMenuItem.Create(Self);
try
Own.Find("m1");
NewItem := TMenuItem.Create(Self);
NewItem.Caption := "TEST";
NewItem.Name := "TESSST";
// m1.Add (NewItem);
Own.Add (NewItem);
except
Own.Free;
end;


Если делаю m1.Add (NewItem);, то добавляется, а если Own.Add (NewItem);, то нет. Почему ?


 
Нурик   (2003-12-20 06:34) [1]

Посмотрите хелп: TMenuItem, метод Add. там есть пример, может как-нибудь разберетесь, чуть измените код.


 
ЮЮ   (2003-12-20 06:50) [2]

>Own.Add (NewItem);, то нет.

Почему нет? Кто такой Own? Только что созданный TMenuItem и не помещённый ни в какое меню!
>Own.Find("m1");
И чего там искать, спрашивается? в только что созданном?

Может имелось в виду:

begin

Own := <Item из MainMenu, в котором ищем>.Find("m1");
// хотя чего искать? мы его и так должны знать
// в противном случае нужен тупой перебор итемов из меню
if Own = nil then begin
// не найден
// или созлем или выходим
exit;
end;
NewItem := TMenuItem.Create(Self);
try
NewItem.Caption := "TEST";
NewItem.Name := "TESSST";
Own.Add (NewItem);
except
NewItem.Free;
end;
end;


 
Кен   (2003-12-20 07:20) [3]


> ЮЮ © (20.12.03 06:50) [2]
> Own := <Item из MainMenu, в котором ищем>.Find("m1");
> // хотя чего искать? мы его и так должны знать
> // в противном случае нужен тупой перебор итемов из меню

Я хочу запихнуть в меню дерево. TreeView. Чтобы как Избранное в Интернет Эксплорере было. Поэтому мы ничего не знаем. Знаем только имена только что запихнутых в меню элементов (m0, m1, m2, m3 ... ).
Чтобы было дерево мне надо от m1 сделать веточку, и в неё ещё напихать итемов. И так далее.
Как такое сделать ?


 
ЮЮ   (2003-12-22 04:33) [4]

>И так далее. Как такое сделать ?

Рекурсивно обойти дерево. Например так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
miFavorite: TMenuItem;
TreeView1: TTreeView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
procedure TreeToMenu(TreeNode: TTreeNode; MenuItem: TMenuItem);
var
mi: TMenuItem;
node: TTreeNode;
begin
node := TreeNode;
While node <> nil do begin
mi := TMenuItem.Create(nil);
mi.Caption := node.Text;
MenuItem.Add(mi);
if node.Count > 0 then TreeToMenu(node.getFirstChild, mi);
node := node.getNextSibling;
end;
end;
var
i: integer;
begin
miFavorite.Clear;
TreeToMenu(TreeView1.Items[0], miFavorite);
end;

end.


 
Кен   (2003-12-23 01:06) [5]


> ЮЮ © (22.12.03 04:33) [4]

Красиво с рекурсией-то. Спасибо !



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

Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.012 c
6-25492
Anarki
2003-11-09 00:16
2004.01.09
Как сделать так, чтобы при подключении idSMTP программа не висла?


14-25579
Dmitriy O.
2003-12-18 09:36
2004.01.09
Куда девались проги из кладовки ?


3-25183
nik4543
2003-12-09 15:12
2004.01.09
Word


1-25353
Olphi
2003-12-21 13:52
2004.01.09
перключение MDI форм в меню


14-25572
barbi
2003-12-18 10:31
2004.01.09
Вопросы президенту





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