Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 364

/ вопрос открыт /

Здравствуйте, эксперты!
Помогите пожалуйста.
Есть TPageControl, на нем динамически созданы вкладки (количество может быть разное), на вкладках панели, на них TEdit
Также, на форме динамически создаются TButton равное по количеству созданных вкладок.
Цель такова: При заполнении всех существующих TEdit'ов в активной вкладке соответствующий TButton становится Enabled:=False
Вот что сделал я:

Приложение:
  1. procedure Tform2.EditChangeButton(Sender: TObject);
  2. var
  3. w,i,q: integer;
  4. begin
  5.  
  6.  
  7. for q:=1 to w do
  8. if TEdit(TPanel(Tab1.FindComponent('Pa nel_Tabl'+IntToStr(i+1))).FindCompo nent('Date'+IntToStr(q))).Text<>'' then
  9. TButton(Form2.FindComponent('List'+ IntToStr(i+1))).Enabled:=False
  10. Else TButton(Form2.FindComponent('List'+ IntToStr(i+1))).Enabled:=True;
  11. end;
  12.  
  13.  
  14.  
  15. procedure Tform2.EditChangeButton(Sender: TObject);
  16. var w,q,i : Integer;
  17. Date: TPanel;
  18. ok: Boolean;
  19. begin
  20. w:=StrToInt(Edit3.text);
  21. i:=StrToInt(Edit1.text);
  22. Date:=(sender as TEdit).parent as TPanel;
  23. ok:=true;
  24. for q:=0 to Date.controlcount-1 do begin
  25. if Date.controls[q] is TEdit and ((Date.controls[q] as TEdit).Text<>'') then
  26. begin
  27. ok:=false
  28. else
  29. ok:=true;
  30. end;
  31. TButton(Form2.FindComponent('List'+IntToStr(i+1))).Enabled:=ok;
  32. end;
  33.  
  34.  
  35.  
  36. ...
  37. for q:=1 to Date.controlcount-1 do begin
  38. if Date.controls[q] is TEdit and ((Date.controls[q] as TEdit).Text<>'') then
  39. ok:=false;
  40. end;
  41. TButton(Form2.FindComponent('List'+IntToStr(i+1))).Enabled:=ok;
  42. end;


BarsDG Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: BarsDG (статус: Посетитель)
Вопрос отправлен: 2 июня 2011, 14:34
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 17 июня 2011, 14:49; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 2 июня 2011, 15:10 [#1]:

Если вкладки однотипные, то подход изначально неправильный. Я написал много программ, в которых главный элемент - это PageControl и динамически создающиеся вкладки. Дык вот, советую тебе не заморачиваться, а написать наследника от TTabSheet, в конструкторе которого создавать все дочерние элементы, присваивать им свойства и обработчики событий. Это очень удобно. Могу дать тебе один из своих модулей в качестве примера.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

2 июня 2011, 15:54: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

BarsDG

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

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'ов нужного мне имени?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:56
Выполнено за 0.03 сек.