Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как динамически создать Separator в MainMenu?


Kolan ©   (2007-07-11 22:11:00) 

Здравствуйте,
 Оказывается если указать Caption '-', то в ран тайме ничего не создасться вообще.


Kolan   (2007-07-12 08:49:00) [1]

Короче все вы гоните, благодарю за помощь и разъяснения, я погнал дальше работать.
:)


{RASkov}   (2007-07-12 08:45:00) [2]

> [8] Kolan ©   (12.07.07 08:29)
> Странно тк в дизан тайме это не так…

И это правильно :) В дизайне ты должен видеть все, а в работающем меню никчему видеть "никчемную" "-" :)
И [6] - работает. Так, что не гони :) В [7] пояснение...)


Kolan   (2007-07-12 08:29:00) [3]

[6] — не работает, а вот так:
var
TempMenuItem0, TempMenuItem, TempMenuItem1: TMenuItem;
begin
TempMenuItem0 := TMenuItem.Create(MainMenu1);
TempMenuItem0.Caption := 'Гоню';
MainMenu1.Items[0].Add(TempMenuItem0);

TempMenuItem := TMenuItem.Create(MainMenu1);
TempMenuItem.Caption := '-';
MainMenu1.Items[0].Add(TempMenuItem);

TempMenuItem1 := TMenuItem.Create(MainMenu1);
TempMenuItem1.Caption := 'Все таки это ты гонишь… :)))';
MainMenu1.Items[0].Add(TempMenuItem1);
end;


Появляется. То есть он(сепаратор) появитя только при окружении пунктами. Странно тк в дизан тайме это не так…


{RASkov}   (2007-07-12 00:45:00) [4]

> [6] {RASkov} ©   (12.07.07 00:38)

Т.е немножко и я гоню :) Если MainMenu1.Items[0] изначально ничего не содержит..
нужно три элемента в примере [6] т.е. перед черточкой еще один элемент добавить...
Но даже и так - выполни тот код [6](например по нажатию бутона) 2 или более раз :)


{RASkov}   (2007-07-12 00:38:00) [5]

> [5] Kolan ©   (11.07.07 22:58)

Попробуй вот так:
var
TempMenuItem, TempMenuItem1: TMenuItem;
begin
 TempMenuItem := TMenuItem.Create(MainMenu1);
 TempMenuItem.Caption := '-';
 MainMenu1.Items[0].Add(TempMenuItem);
 TempMenuItem1 := TMenuItem.Create(MainMenu1);
 TempMenuItem1.Caption := 'Все таки это ты гонишь… :)))';
 MainMenu1.Items[0].Add(TempMenuItem1);
end;

:)


Kolan   (2007-07-11 22:58:00) [6]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 TempMenuItem: TMenuItem;
begin
 TempMenuItem := TMenuItem.Create(MainMenu1);
 //TempMenuItem.Caption := 'Да ты гонишь… :)))';
 TempMenuItem.Caption := '-';
 MainMenu1.Items[0].Add(TempMenuItem);
end;


Тоже самое — сделал новый проект.


Kolan   (2007-07-11 22:54:00) [7]

> Упрости код.

Ладно, шас сделаю тест проект.


Johnmen   (2007-07-11 22:46:00) [8]

Ну здесь криминала я не вижу. Как и добавления '-'.
Упрости код. Для отладки...


Kolan   (2007-07-11 22:37:00) [9]

> Да ты гонишь… :)))

Б. буду :)

Так:
 'asdasd-' — Вижу пункт меню: «asdasd-»

Так:
'-' — вообще ничего :(

Добаляю так:

function TMenuInsertColleague.AddMenuItem(MainMenu: TMainMenu;
 MenuData: TMenuItemData): Boolean;
var
 I: Integer;
 TempMenuItem: TMenuItem;
begin
 Result := False;
 if Assigned(MenuData) and Assigned(MainMenu) then
 begin
   for I := 0 to MainMenu.Items.Count — 1 do
   begin
     if MainMenu.Items[I].Caption = MenuData.Section then
     begin
       TempMenuItem := TMenuItem.Create(MainMenu);
       TempMenuItem.Caption := MenuData.Caption;
       TempMenuItem.ImageIndex := MenuData.ImageIndex;
       TempMenuItem.Tag := Integer(MenuData.CommandClass);
       TempMenuItem.OnClick := MenuClickEvent;
       MainMenu.Items[I].Add(TempMenuItem);
       Result := True;
       Exit;
     end;
   end;
   TempMenuItem := TMenuItem.Create(MainMenu);
   TempMenuItem.Caption := MenuData.Section;
   MainMenu.Items.Add(TempMenuItem);
   
   Result := AddMenuItem(MainMenu, MenuData);
 end;
end;


Johnmen   (2007-07-11 22:31:00) [10]

Да ты гонишь... :)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо