Форум: "Основная";
Текущий архив: 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.004 c