Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 18:45   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Динамическое создание и обращение через FindComponent

Всем доброго времени суток.

Столкнулся с такой проблемой, пытаюсь обратиться к Комбобоксу через FindComponent, причём этот комбобокс создаётся динамически, хочу узнать какой текст в этом комбобоксе:

Код:
ShowMessage((FindComponent('cbExercises2') as TComboBox).Text);
Но всегда выдаётся пустое сообщение. Вот полный листинг программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, RzButton, XPMan;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    RzBitBtn1: TRzBitBtn;
    ScrollBox1: TScrollBox;
    cbExercises1: TComboBox;
    cbSet1: TComboBox;
    edtWeight1: TEdit;
    edtReit1: TEdit;
    RzBitBtn2: TRzBitBtn;
    procedure FormResize(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cbExercises: TComboBox;
  cbSet: TComboBox;
  FCount: integer = 2;
  FTop: integer = 30;

implementation

{$R *.dfm}

procedure TForm1.FormResize(Sender: TObject);
begin
  ScrollBox1.Height := Form1.ClientHeight - ScrollBox1.Top - 10;
  ScrollBox1.Width := Form1.ClientWidth - 16;
end;

procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
  I: integer;
begin
  cbExercises := TComboBox.Create(Owner);
  with cbExercises do
  begin
    Parent := ScrollBox1;
    Name := 'cbExercises' + IntToStr(FCount);
    Left := 5;
    Top := cbExercises1.Top + FTop;
    Width := 225;
    Height := 21;
    Color := clWhite;
    ItemHeight := 13;
    TabOrder := 1;
    Text := 'Выберите упражнение';
  end;
  cbSet := TComboBox.Create(Owner);
  with cbSet do
  begin
    Parent := ScrollBox1;
    Name := 'cbSet' + IntToStr(FCount);
    Tag := 4;
    Left := 236;
    Top := cbSet1.Top + FTop;
    Width := 80;
    Height := 21;
    Color := clWhite;
    ItemHeight := 13;
    MaxLength := 1;
    TabOrder := 1;
    Text := 'Подходы';
    for I := 1 to 6 do
      Items.Add(IntToStr(I));
  end;
  Inc(FCount);
  FTop := FTop + 30;
end;

procedure TForm1.RzBitBtn2Click(Sender: TObject);
begin
  ShowMessage((FindComponent('cbExercises2') as TComboBox).Text);
end;

end.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 10.03.2010, 18:53   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а если ScrollBox1.FindComponent?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2010, 19:00   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

cbExercises := TComboBox.Create(Owner);
//ComboBox как component будет закреплен за объектом Owner
и среди компонентов Form1 мы его естественно не найдем

cbExercises := TComboBox.Create(self);
//ComboBox как component будет закреплен за этим (self) объектом form1
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.03.2010, 19:03   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Всем спасибо, теперь всё ясно
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение через TComponent Marsel737 Общие вопросы Delphi 6 08.12.2009 21:54
обращение к элементам двумерного массива через указатели в С++ серг Помощь студентам 17 06.12.2009 18:00
обращение к элементам двумерного массива через указатели серг Общие вопросы C/C++ 2 05.12.2009 23:33
Обращение к элементам массива через указатель в С++ серг Помощь студентам 1 24.11.2009 01:30
Динамическое обращение к элементам формы. Dennis Microsoft Office Excel 2 17.03.2009 12:55