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

Вниз

Как создавать компоненты на Notebook   Найти похожие ветки 

 
Дмитрий_05   (2005-09-11 21:49) [0]

У меня Notebook создается динамически на одной из закладок PageControl-а которая имеет свой класс TTabSheet:

Notebook1: TNotebook;
StrObjects: TStringList;

Notebook1:=TNotebook.Create(Self);
Notebook1.Parent := TabSheet1;
Notebook1.SetBounds(184, 0, 529, 267);
Notebook1.Anchors := [akLeft, akTop, akTop, akBottom];
Notebook1.Pages:=StrObjects;


на Notebook-е на всех его закладках тоже нужно создать компоненты, так вот я создаю на одной закладке Label:

with TLabel.Create(Self) do
begin
Parent:=Notebook1.Pages.Objects[i] as TNotebook;
Left:=5;
Top:=8;
Caption:=StrObjects[i];
end;


компилируется нормально, в самой программе происходит ошибка при создании Label-а "Invalid class typecast". И в самой Delphi выделяется крассным эта строчка: Parent:=Notebook1.Pages.Objects[i] as TNotebook; Почему?


 
Fay ©   (2005-09-11 22:47) [1]

2 Дмитрий_05   (11.09.05 21:49)

Parent := TPage(Notebook1.Pages.Objects[i]);


 
Дмитрий_05   (2005-09-12 01:29) [2]

еще небольшой вопрос... Таким же образом я создал Edit-ы и Button-ы на закладках... и вот открыта какая-то закладка, при нажатии на созданную кнопку как мне определить какой Edit лежит на тойже закладке?


 
Defunct ©   (2005-09-12 01:36) [3]

Fay ©   (11.09.05 22:47) [1]

хм.. а нe универсальнее ли будет:
TWinControl(.. )


 
Fay ©   (2005-09-12 03:57) [4]

2 Defunct ©   (12.09.05 1:36) [3]
Будет. Я просто ошибку конкретно 8)


 
Fay ©   (2005-09-12 03:59) [5]

2 Defunct ©   (12.09.05 1:36) [3]
Хотя... Учитывая тип свойства Parent...
Куда уж универсальнее.


 
Defunct ©   (2005-09-12 05:32) [6]

> Дмитрий_05   (12.09.05 01:29) [2]

потанцевать с бубном вокруг
Button.Owner.Components[i]
либо вокруг
Button.Parent.Controls[i]
в общем выбирайте, что удобнее ;>


> Fay ©   (12.09.05 03:59) [5]
если честно, я просто не знал, что такое TPage. ;>
мало ли что там в том Objects[i] ;>


 
Fay ©   (2005-09-12 05:34) [7]

Defunct ©   (12.09.05 5:32) [6]
Я тоже не знал 8)
ShowMessage(TObject(Notepad1.Pages.Objects[0]).ClassName)


 
Наиль ©   (2005-09-12 07:38) [8]


>  [2] Дмитрий_05   (12.09.05 01:29)

Решение для одого Едита на TPage.
Используешь два массива Buttons и Edits.
Edits[x]:=TEdit.Create;
Edits[x]:=TPage(...[i]);
Buttons[j]:=TButton.Create(...);
Buttons[j].Parent:=TPage(...[i]);
Buttons[j].tag:=x;

при нажатии:
Edit:=Edits[TControl(Senders).tag];
Кнопки можно без массива.


 
Дмитрий_05   (2005-09-12 18:14) [9]

Так всетаки что лучше писать TWinControl(...) или TPage(...)? )))


 
Fay ©   (2005-09-12 18:16) [10]

2 Дмитрий_05   (12.09.05 18:14) [9]
По барабану.


 
Дмитрий_05   (2005-09-13 00:37) [11]

сделал так, попробовал с одним пока:

private
 Edits: array of TEdit;
...

Edits[0]:=TEdit.Create(Self);
Edits[0].Parent := TPage(Notebook1.Pages.Objects[0]);
Edits[0].Left:=10;
Edits[0].Top:=10;


При создании уже в самой программе выскакивает ошибка на строке: Edits[0]:=TEdit.Create(Self); "Access violation at address 00450142 in module Project1.exe. Write of address 00000000."


 
Defunct ©   (2005-09-13 01:13) [12]

Дмитрий_05   (13.09.05 00:37) [11]

А SetLength(Edits, ..) где?
вот тебе и AV.
читай справку. ;>


 
Дмитрий_05   (2005-09-13 01:14) [13]

Я сам разобрался, я забыл инициализировать массив функцией SetLength


 
Дмитрий_05   (2005-09-13 01:15) [14]

да, я уже прочитал в книге )))



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
1-1126524266
lauren
2005-09-12 15:24
2005.10.02
forms


1-1125930773
kblc
2005-09-05 18:32
2005.10.02
Singleton Com Server


1-1126000453
Dennis S
2005-09-06 13:54
2005.10.02
Как читать из любого ЕХЕ файла данные...


3-1124188824
Xmen
2005-08-16 14:40
2005.10.02
QRRichText


1-1126443042
kolya.nn
2005-09-11 16:50
2005.10.02
Звук в Windows





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