IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> динамическое создание меню
тишина
сообщение 2.05.2005 15:51
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


помогите описать динамическое создание меню, кнопки, панели получаются, меню так же прописываю, а оно не отображается, вот кусок из процедуры FormCreat:

Код
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
kol:=15;
Caption:='Игра';
Color:=$00FC1B01;
BorderStyle:=bsSingle;
ClientWidth := CW*((kol div 4)+1);
ClientHeight := CH*8;
Menu:=MainMenu1;
MainMenu1:=TMainMenu.Create(Form1);
with MainMenu1 do begin
   Left:= 10; \\вот это вроде в свойствах меню нет, но надо же как-то
   Top:= 10; \\ задавать, где оно должно находиться  :huh:
   Parent:=Form1;
   ParentBiDiMode:=True;
   Exit:=TMenuItem.Create(Form1.MainMenu1);
    with Exit do begin
       OnClick:=FormExit;
       Caption:='Выход';
   end;
     Spravka:=TMenuItem.Create(Form1.MainMenu1.Items);
     with Spravka do begin
       Caption:='Справка';
     About:=TMenuItem.Create(Spravka);
     with About do begin
       OnClick:=PrgAbout;
       Caption:='О программе';
     end;
     Rules:=TMenuItem.Create(Spravka);
     with Rules do begin
       OnClick:=GameRules;
       Caption:='Правила';
       end; end; end;


Тегами для подсветки кода пользуйтесь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
тишина
сообщение 2.05.2005 21:26
Сообщение #2





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


а вот и не бред, в некоторых случаях никак нельзя обойтись без динамического создания, либо такой способ облегчает программирование, как ни странно, вот кстати в моём случае - это так, и предмет - Технология программирования, значит мы должны научиться пользоваться различными способами задания компонентов, а не только уметь картинки переставлять, вот
а ваш код работает?
к сожалению сейчас проверить не могу, пора спать, но он, как мне кажется, практически дублирует, то что у меня прописано, только несколько строчек выведено в отдельную процедуру, для сравнения создания мной других элементов с созданием меню приведу полностью процедуру FormCreat:

Код

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
kol:=15;
Caption:='Èãðà';
Color:=$00FC1B01;
BorderStyle:=bsSingle;
ClientWidth := CW*((kol div 4)+1);
ClientHeight := CH*8;
Menu:=MainMenu1;
MainMenu1:=TMainMenu.Create(Form1);
with MainMenu1 do begin
   Left:= 10;
   Top:= 10;
   Parent:=Form1;
   ParentBiDiMode:=True;
   Exit:=TMenuItem.Create(Menu.Items);
    with Exit do begin
       OnClick:=FormExit;
       Caption:='Âûõîä';
   end;
     Spravka:=TMenuItem.Create(Form1.MainMenu1.Items);
     with Spravka do begin
       Caption:='Ñïðàâêà';
     About:=TMenuItem.Create(Spravka);
     with About do begin
       OnClick:=PrgAbout;
       Caption:='Î ïðîãðàììå';
     end;
     Rules:=TMenuItem.Create(Spravka);
     with Rules do begin
       OnClick:=GameRules;
       Caption:='Ïðàâèëà';
       end; end; end;
v1:=TButton.Create(Form1);
with v1 do begin
    Font.Name:='Century Gothic';
    Font.Size:=9;
    Height:=30;
    Width:=75;
    Left:=5;
    Top:=CH*4+200;
    Caption:='15-øêè';
    Parent:=Form1;
    OnClick:=Button2Click; end;
v2:=TButton.Create(Form1);
with v2 do begin
    Font.Name:='Century Gothic';
    Font.Size:=9;
    Height:=30;
    Width:=75;
    Left:=85;
    Top:=CH*4+200;
    Caption:='19-øêè';
    Parent:=Form1;
    OnClick:=Button3Click; end;
v3:=TButton.Create(Form1);
with v3 do begin
    Font.Name:='Century Gothic';
    Font.Size:=9;
    Height:=30;
    Width:=75;
    Left:=165;
    Top:=CH*4+200;
    Caption:='24-øêè';
    Parent:=Form1;
    OnClick:=Button4Click; end;
ng:=TButton.Create(Form1);
with ng do begin
    Font.Name:='Century Gothic';
    Font.Size:=12;
    Height:=30;
    Width:=235;
    Caption:='Íîâàÿ èãðà';
    Left:=5;
    Top:=CH*4+160;
    Parent:=Form1;
    OnClick:=Button1Click; end;
    kol:=15;
    For i:=1 to kol do begin
   pole[i]:=TButton.Create(Form1);
with pole[i] do  begin
   if i<=(kol div (4+n))+1 then begin
   Left:=(i-1)*CW;
   Top:=CH*0+CH; end
    else begin
   if i<=(kol div (4+n))*2+2 then begin
   Left:=(i-((kol div (4+n))+2))*CW;
   Top:=CH+CH; end
    else begin
   if i<=(kol div (4+n))*3+3 then begin
   Left:=(i-((kol div (4+n))*2+3))*CW;
   Top:=CH*2+CH; end
    else begin
   if i<=(kol div (4+n))*4+3+n then begin
   Left:=(i-((kol div (4+n))*3+4))*CW;
   Top:=CH*3+CH; end
    else begin
   if i<=(kol div (4+n))*5+4 then begin
   Left:=(i-((kol div (4+n))*4+3+n+n))*CW;
   Top:=CH*4+CH; end; end; end; end; end;
     Font.Name:='Century Gothic';
     Font.Size:=9;
     Cursor:=crDrag;
     Caption:=IntToStr(i);
     Width:=CW;
     Height:=CH;
     Parent:=Form1;
     OnDragDrop:=FormDragDrop;
     DragMode:=dmAutomatic;

 end; end;
  end;


напомню, что все кнопки работают, и располагаются на своих местах, потому я и теряюсь в догадках, что же происходит с меню, я предполагаю, что я неправильно прописываю именно элементы Items может там программные скобки где-то должны быть или наоборот - их не должно быть, или обычные (), или что-то ещё, о чём я не догадываюсь sad.gif

спасибо, за то что стараетесь, но пока по-моему продвижений нет sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 13.07.2025 13:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"