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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2016, 17:03   #1
Fantomas_RUS
Пользователь
 
Регистрация: 19.01.2016
Сообщений: 17
По умолчанию Пытаюсь добраться через Sender до владельца и изменить Edit расположенный на владельце, но не чего не происходит

Добрый день.
Такой вопрос. Я описал некий класс формы
Код:
TOptionForm = class(TForm)
private
 procedure Test3(Sender: TObject);
public
 Edit1: TEdit;
constructor CreateNew(AOwner: TCompanent); reintroduce;
end;
Пытаюсь добраться через Sender до владельца и изменить Edit расположенный на владельце, но не чего не происходит. Хотя Sender, то бишь вызвавшего событие, я могу изменить параметры. Куда копать?
Код:
.
.
.
создаю этот класс
var F: TOptionForm; A: TSpeedButton;
begin
 F:= TOptionForm.CreatNew(Self);
 With F do
 begin
  Name:= 'FormOption1';
  BorderStyle:= bsDialog;
  Position:= poScreenCenter;
  Height:= 200;
  Width:= 300;
  Parent:= Self;
  Visible:= true;
 end;

 A:=TSpeedButton.Create(F);
 With A do
 begin
  Name:= 'SButton1';
  Caption:= 'Iaiea n iocueie';
  Top:= 30;
  Left:= 5;
  Height:= 20;
  Width:= 100;
  Parent:= F;
  OnClick:= F.test3;
 end;
//
//
//
procedure TOptionForm.Test3(Sender: TObject);
begin
 I:= 0;
 if (Sender is TSpeedButton) then
  begin
   TSpeedButton(Sender).Caption:= 'wwwwwwwwwwwww';
   TOptionForm(TSpeedButton(Sender).Owner).Edit1.Text:= '11111';
   with TOptionForm(TSpeedButton(Sender).Owner) do Edit1.Text:= 'dsgedgreg';
  end;
end;
Fantomas_RUS вне форума Ответить с цитированием
Старый 19.01.2016, 17:20   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

И зачем все эти выкрутасы?
Вы просто в дизайнере создать форму не в силах?
come-on вне форума Ответить с цитированием
Старый 19.01.2016, 17:28   #3
Fantomas_RUS
Пользователь
 
Регистрация: 19.01.2016
Сообщений: 17
По умолчанию

нет, так как форма создастся с 2 мя целями:
1. Используется один раз за практически всю жизнь программы.
2. Личное обучения с использованием методов класса. Событий.

Есть ли детальные предложения, знатоки? Как правильно делать, что я описал в динамически созданных классах?
Fantomas_RUS вне форума Ответить с цитированием
Старый 19.01.2016, 17:36   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
1. Используется один раз за практически всю жизнь программы.
и что, как этому мешает дизайнер?
Цитата:
2. Личное обучения с использованием методов класса. Событий.
опять таки, ничего не мешает, если в дизайнере делать
а с учетом того лоскута кода что вы показали, который никак не помогает в понимании того что вы делаете, кроме того что пишете наавось

так что надо за учебники взяться, если ставите цель изучения
come-on вне форума Ответить с цитированием
Старый 19.01.2016, 17:38   #5
Fantomas_RUS
Пользователь
 
Регистрация: 19.01.2016
Сообщений: 17
По умолчанию

Поясни пожалуйста, что ты подразумеваешь под "дизайнером"?
Fantomas_RUS вне форума Ответить с цитированием
Старый 19.01.2016, 17:41   #6
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Тоже что и все. В иде делаете новую форму и понеслась...
come-on вне форума Ответить с цитированием
Старый 19.01.2016, 18:06   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

поставь брейкпойнт внутрь обработчика и для начала тупо убедись, что в него выполнение доходит.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.01.2016, 18:12   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вообще я конечно не большой специалист, но! Если Вы создаете форму сами, то опосля Вы должны создать независимо от формы Edit и там уже указать родителем Вашу форму. Так должно сработать и так Вы сможете потом переназначить родителя. А так получается Вы хотите переназначить кусок объекта другому объекту наплевав на все эти виртуальные таблицы, конструкторы, деструкторы и прочую служебную муть классов. И там не указали как Вы создаете форму? Как написано - Edit на форме, значит и создавать его надо там. Он там создается? Второе - Вы объявили Edit, а создаете СпидБатон, это как вообще? Вы чего-то не договариваете нам...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 19.01.2016 в 18:17.
Utkin вне форума Ответить с цитированием
Старый 20.01.2016, 09:17   #9
Fantomas_RUS
Пользователь
 
Регистрация: 19.01.2016
Сообщений: 17
По умолчанию

Коллеги, забыл указать что я в действительности создаю при создании кнопки SButton1 ниже создаю и Edit1
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var F: TOptionForm; A: TSpeedButton;
begin
F:= TOptionForm.CreateNew(Self);
With F do
begin
 Name:= 'FormOption1';
 BorderStyle:= bsDialog;
 Position:= poScreenCenter;
 Height:= 200;
 Width:= 300;
 Parent:= Self;
 Visible:= true;
end;

A:=TSpeedButton.Create(F);
With A do
begin
 Name:= 'SButton1';
 Caption:= 'Iaiea n iocueie';
 Top:= 30;
 Left:= 5;
 Height:= 20;
 Width:= 100;
 Parent:= F;
 OnClick:= F.test3;
end;

Edit1:=TEdit.Create(F);
With Edit1 do
begin
 Name:= 'Edit1';
 Parent:= F;
 Top:= 30;
 Left:= 105;
 Height:= 20;
 Width:= 145;
 Enabled:= true;
 Text:= PlayerJ.fFolderMuzik;
end;

F.Show;

end;
В обработчик события -> метод программа попадает. Кнопку саму изменить из события(процедуры) я могу. А вот хозяина кнопки(динамическая форма) и что на нем лежит (Edit1) изменить не могу. Если можно опишите по подробнее, как правильно сделать?

Последний раз редактировалось Fantomas_RUS; 20.01.2016 в 09:29.
Fantomas_RUS вне форума Ответить с цитированием
Старый 20.01.2016, 09:45   #10
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Нужно по клику батона изменить текст едита? Или я не так понимаю задачу?
Iron Monk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добраться до USB через Delphi или С# IgorMagnit Общие вопросы Delphi 1 25.01.2013 06:18
Как изменить свойство ADOConnection1.ConectionString через edit или каким нибуть другим путем xsaroo БД в Delphi 3 14.10.2012 16:54
Ни чего не происходит((( Givshuk Помощь студентам 2 16.03.2012 23:15
Чего не происходит чтения с файла? Nikita1987 Общие вопросы C/C++ 8 29.06.2010 16:14
Как добраться до определенного символа в Edit Ivanko Помощь студентам 2 08.02.2010 11:49