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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2016, 09:45   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. Использовать Parent вместо Owner. Родитель в смысле контейнера для визуального объекта Parent, а не Owner
2. В этом родителе искать эдиты в цикле в свойстве Controls

PS и ваще весь код выбросить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

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

Я кликаю по динамически созданной кнопке на динамической форме. На этой форме есть еще динамический Edit. Необходимо по нажатию изменить содержимое Edit-а.
Fantomas_RUS вне форума Ответить с цитированием
Старый 20.01.2016, 09:58   #13
Fantomas_RUS
Пользователь
 
Регистрация: 19.01.2016
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
1. Использовать Parent вместо Owner. Родитель в смысле контейнера для визуального объекта Parent, а не Owner
2. В этом родителе искать эдиты в цикле в свойстве Controls
Можно пример пожалуйста.
Fantomas_RUS вне форума Ответить с цитированием
Старый 20.01.2016, 10:01   #14
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Fantomas_RUS Посмотреть сообщение
Можно пример пожалуйста.
Код:
var
f: TForm;
b: TButton;
e: TEdit;
m: TMethod;

procedure _Edit;
begin
 e.Text:= 'bla-bla';
end;

procedure _Create;
begin
   f:= TForm.Create(nil);
   f.SetBounds(50,50,200,120);
   f.Caption:= '...';
   b:= TButton.Create(f);
   b.SetBounds(10,10,75,25);
   b.Parent:= f;
   b.Caption:= 'Ok';
   e:= TEdit.Create(f);
   e.SetBounds(10,40,75,25);
   e.Parent:= f;
   m.Code := @_Edit;
   m.Data := nil;
   b.OnClick:= TNotifyEvent(m);
end;

begin
   _Create;
   f.ShowModal;
   FreeAndNil(f);
end.
Iron Monk вне форума Ответить с цитированием
Старый 20.01.2016, 10:07   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Надо
F.Edit1:=TEdit.Create(F);
НО, учитывая private edit1: TEdit; так написать НЕ получится. (если конечно TFormOption "как положено" находится в другом uinit относительно TForm1)
стало быть, есть еще и глобал var Edit1: TEdit; в которой и содержится созданный объект.
Цитата:
Коллеги, забыл указать что я в действительности
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var F: TOptionForm; A: TSpeedButton;
begin
А
Цитата:
TOptionForm(TSpeedButton(Sender).Ow ner).Edit1.Text:= '11111';
должен "ругаться" AccsessViolation (AV)
Цитата:
изменить Edit расположенный на владельце, но не чего не происходит
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.01.2016 в 10:20.
evg_m на форуме Ответить с цитированием
Старый 20.01.2016, 10:09   #16
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Один хрен, не врубаюсь, что ты пытаешься изобрАзить...

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

Посмотрите на код Iron Monk. Обратите внимание, что Эдит и Батон форме не принадлежат. Ваабче не принадлежат (в секции var это четко видно). Это ровно то, о чем я писал. То есть изначально они не должны создаваться на форме, если Вы потом вдруг захотите поменять Parent. Иначе результат будет труднообъясним. Короче давайте сортируйте мухи и котлеты.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

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

Цитата:
Сообщение от evg_m Посмотреть сообщение
Надо
F.Edit1:=TEdit.Create(F);
НО, учитывая private edit1: TEdit; так написать НЕ получится. (если конечно TFormOption "как положено" находится в другом uinit относительно TForm1)
стало быть, есть еще и глобал var Edit1: TEdit; в которой и содержится созданный объект.

А

должен "ругаться" AccsessViolation (AV)
Edit присутствует в новом классе-форме в которой и пытаемся написать свойство через которое можно добраться до изменения Edita
Код:
TOptionForm = class(TForm)
private
 procedure Test3(Sender: TObject);
public
 Edit1: TEdit;
constructor CreateNew(AOwner: TCompanent); reintroduce;
end;
Fantomas_RUS вне форума Ответить с цитированием
Старый 20.01.2016, 11:24   #19
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
F:= TOptionForm.CreateNew(Self);
With F do
begin
Name:= 'FormOption1';
BorderStyle:= bsDialog;
Position:= poScreenCenter;
Height:= 200;
Width:= 300;
Parent:= Self;
Visible:= true;
end;
что тут такое Self ?
Цитата:
TOptionForm(TSpeedButton(Sender).Ow ner).Edit1.Text:= '11111';
with TOptionForm(TSpeedButton(Sender).Ow ner) do Edit1.Text:= 'dsgedgreg';
зачем тут эти выкрутасы? в контексте какого объекта работает этот метод, если OnClick:= F.test3;?
come-on вне форума Ответить с цитированием
Старый 20.01.2016, 11:57   #20
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
unit ufMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Vcl.StdCtrls, Vcl.Buttons, Vcl.Imaging.pngimage, Vcl.ExtCtrls;

type
  TFormMain = class(TForm)
    ButtonFuckIt: TButton;
    Image1: TImage;
    procedure ButtonFuckItClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TOptionForm = class(TForm)
  private
    procedure Test3(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  public
    Edit1: TEdit;
    constructor CreateNew(AOwner: TComponent; Dummy: Integer  = 0); override;
  end;

var
  FormMain: TFormMain;

implementation

{$R *.dfm}

{ TOptionForm }

constructor TOptionForm.CreateNew(AOwner: TComponent; Dummy: Integer  = 0);
var
  A: TSpeedButton;
begin
  inherited CreateNew(AOwner);
  DefaultMonitor:= dmPrimary;
  Position:= poScreenCenter;
  Width:= 136;
  Height:= 96;
  BorderStyle:= bsDialog;
  Caption:= 'TOptionForm';

  Edit1:= TEdit.Create(Self);
  with Edit1 do
    begin
      Parent:= Self;
      SetBounds(8, 8, Parent.ClientWidth - 16, Height);
      Text:= 'Edit1';
    end;

  A:= TSpeedButton.Create(Self);
  with A do
    begin
      Parent:= Self;
      Caption:= 'Iaiea n iocueie :)';
      SetBounds(8, Edit1.BoundsRect.Bottom + 4, Parent.ClientWidth - 16, Height);
      OnClick:= Test3;
    end;
end;

procedure TOptionForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;

procedure TOptionForm.Test3(Sender: TObject);
var
  SenderComponent: TComponent;
begin
  SenderComponent:= TComponent(Sender);
  SenderComponent.Tag:= SenderComponent.Tag + 1;
  Edit1.Text:= Format('Тыкнул %d-й раз.', [SenderComponent.Tag]);
  TSpeedButton(Sender).Caption:= 'wwwwwwwwwwwww';
end;

procedure TFormMain.ButtonFuckItClick(Sender: TObject);
begin
  with TOptionForm.CreateNew(Application) do
    begin
      OnClose:= FormClose;
      Show();
    end;
end;

end.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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