|
Вопрос # 5 364/ вопрос открыт / |
|
Здравствуйте, эксперты!
Помогите пожалуйста.
Есть TPageControl, на нем динамически созданы вкладки (количество может быть разное), на вкладках панели, на них TEdit
Также, на форме динамически создаются TButton равное по количеству созданных вкладок.
Цель такова: При заполнении всех существующих TEdit'ов в активной вкладке соответствующий TButton становится Enabled:=False
Вот что сделал я:
Приложение: Переключить в обычный режим- procedure Tform2.EditChangeButton(Sender: TObject);
- var
- w,i,q: integer;
- begin
-
-
- for q:=1 to w do
- if TEdit(TPanel(Tab1.FindComponent('Pa nel_Tabl'+IntToStr(i+1))).FindCompo
nent('Date'+IntToStr(q))).Text<>'' then
- TButton(Form2.FindComponent('List'+ IntToStr(i+1))).Enabled:=False
- Else TButton(Form2.FindComponent('List'+ IntToStr(i+1))).Enabled:=True;
- end;
-
-
-
- procedure Tform2.EditChangeButton(Sender: TObject);
- var w,q,i : Integer;
- Date: TPanel;
- ok: Boolean;
- begin
- w:=StrToInt(Edit3.text);
- i:=StrToInt(Edit1.text);
- Date:=(sender as TEdit).parent as TPanel;
- ok:=true;
- for q:=0 to Date.controlcount-1 do begin
- if Date.controls[q] is TEdit and ((Date.controls[q] as TEdit).Text<>'') then
- begin
- ok:=false
- else
- ok:=true;
- end;
- TButton(Form2.FindComponent('List'+IntToStr(i+1))).Enabled:=ok;
- end;
-
-
-
- ...
- for q:=1 to Date.controlcount-1 do begin
- if Date.controls[q] is TEdit and ((Date.controls[q] as TEdit).Text<>'') then
- ok:=false;
- end;
- TButton(Form2.FindComponent('List'+IntToStr(i+1))).Enabled:=ok;
- end;
 |
Вопрос задал: BarsDG (статус: Посетитель)
Вопрос отправлен: 2 июня 2011, 14:34
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 17 июня 2011, 14:49; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 2 июня 2011, 15:10 [#1]:
Если вкладки однотипные, то подход изначально неправильный. Я написал много программ, в которых главный элемент - это PageControl и динамически создающиеся вкладки. Дык вот, советую тебе не заморачиваться, а написать наследника от TTabSheet, в конструкторе которого создавать все дочерние элементы, присваивать им свойства и обработчики событий. Это очень удобно. Могу дать тебе один из своих модулей в качестве примера.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
2 июня 2011, 15:54: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.
|
BarsDG (статус: Посетитель), 2 июня 2011, 16:09 [#2]:
Вот..., помогли люди добрые. Все работает...!procedure Tform2.EditChangeButton(Sender: TObject); // Идентификация для Button по их значению
Var w,q,i: Integer;
TS: TTabSheet;
TestResult: Boolean;
begin
i:=StrToInt(Edit1.text);
TS := TTabSheet(TEdit(Sender).Parent);
TestResult := True;
for q := 0 to TS.ControlCount - 1 do
if TS.Controls[q].ClassType = TEdit
then if TEdit(TS.Controls[q]).Text = ''
then begin
TestResult := False;
Break;
end;
TButton(Form2.FindComponent('List'+IntToStr(i+1))).Enabled := not TestResult;
end;
|
|
BarsDG (статус: Посетитель), 17 июня 2011, 14:49 [#3]:
Здравствуйте, у меня есть еще вопрос.
После заполнения всех TEdit'ов в каждой вкладке, мне нужно сохранить весь текст из TEdit'ов в OpenOffice.Calc шаблон. С коннектом и открытием шаблона все ОК, а вот вставить знвчения в ячейки (все по порядку, в столбик) у меня серого вещества не хватает. т.к. если брать TEdit по Name, то в каждой вкладке их Name например:
Вкладка-0
TEdit.Name:= от 1 до 4.
Вкладка-1
TEdit.Name:= от 1 до 6
Вкладка-2
TEdit.Name:= от 1 до ~
и т.д.
Может в TEdit'ах есть еще какой либо параметр отвечающий за общее количество TEdit'ов нужного мне имени?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|