TEdit utworzony dynamicznie – jak odczytać wprowadzony tekst?

0

Dzień dobry (dobry wieczór) wszystkim.
Przeszukiwałem zasoby forum. Niestety nie udało mi się znaleźć rozwiązania.
Problem jaki próbuję sobie oprogramować to dynamiczne utworzenie dwóch komponentów TEdit, nastepnie
po wprowadzeniu do nich wartości obliczenie ich sumy w odrębnej procedurze podtstawianej do zdarzenia
On Click przycisku utworzonego także dynamicznie.
Jeżeli ktoś wie czy na forum jest coś podobnego, lub może naprowadzić na rozwiązanie to bardzo proszę
o pomoc.

0

Był taki temat więc nie będę się rozpisywał.
FindComponent?

0

Wrzuciłeś kawałek kodu, ale nie napisałeś, co się u Ciebie dzieje. Czy całość się kompiluje, ale nie działa tak, jak oczekujesz, czy może jakieś błędy wyskakują podczas kompilacji?

U mnie pojawia się podczas kompilacji błąd w linii 41 - Tedit.FindComponent('e2').;. Po jej zakomentowaniu całość się kompiluje i uruchamia, ale pojawia się jedynie puste okienko. Napisz proszę, jak sprawa wygląda u Ciebie.

0

Dzień dobry.

  1. Clarc Dziękuję za podpowiedź, zajrzałem i raczej sobie poradzę.
  2. Cerrato dziękuję za zainteresowanie. Całość kodu kompiluje mi się bez problemu. Niestety mój brak doświadczenia w programowaniu dynamicznym wyhamował mnie.

Przetestowałem rozwiązanie problemu w środowisku Lazarus w oparciu o FindComponnent (podpowiedź Clarc) i zadziałało. Myślę, że wrzucę rozwiązanie do wątku jak tylko zakończę pracę nad tematem. Jesze raz dziękuję.

0

No fajnie będzie, jak wrzucisz tutaj działający kod. Być może za pewien czas przyda się komuś, kto będzie walczył z podobnym tematem.

1

Dobry wieczór.
Wrzuciłem plik z rozwiązaniem, które zrobiłem w Lazarusie. Dziękuję za zainteresowanie i pomoc.
Rozwiązanie, które wrzuciłem obejmuje tylko wyszukanie komponentów TEdit i odczytanie ich zawartości.
Bez problemu wyszukiwane są komponenty tak statyczne jak i dynamiczne.
Jeszcze raz dziękuję i pozdrawiam

1

Ale po co jakieś FindComponent i działania na około? Skoro sam tworzysz dokładnie 2 komponenty TEdit to zachowaj sobie wskaźniki na nie i ich potem użyj.

Wprowadzasz w taki sposób jakieś magiczne stałe (nazwy komponentów 'e1' oraz 'e2'), gdzie przy ich zmianie kompilator Ci tego automatycznie nie wykryje, tylko program po prostu przestanie działać. Moim zdaniem o wiele lepiej by było zrobić z tych e1 oraz e2 składowe prywatne TForm i zapisywać w nich wskaźniki do utworzonych komponentów TEdit, po to aby później w łatwy sposób się do nich odwołać.

0

Dzień dobry wszystkim.
Mr.YaHooo. Jeżeli możesz wrzucić jakiś przykład to bardzo proszę. Będę miał okazję zapoznać się z Twoim pomysłem. Oczywiście najlepiej by było
gdyby przykład obejmował działającą aplikację, tak abym mógł obejrzeć w działaniu i zapoznać się z kodem. Jeżeli nie sprawi Ci to kłopotu to w Lazarusie.
Pozdrawiam

1

@Beginer_01 co prawda nie mam u siebie na dysku Lazarusa, ale w Delphi jak najbardziej mogę Ci pokazać jak to może wyglądać.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    editA: TEdit;
    editB: TEdit;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  editA := TEdit.Create(self);
  editA.Left := 100;
  editA.Top := 10;
  editA.Width := 140;
  editA.Height := 40;
  editA.Parent := self;
  editA.Text := 'textA';
  editA.Visible := True;

  editB := TEdit.Create(self);
  editB.Left := 250;
  editB.Top := 10;
  editB.Width := 140;
  editB.Height := 40;
  editB.Parent := self;
  editB.Text := 'textB';
  editB.Visible := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(editA.Text + ' ' + editB.Text);
end;

end.

Czyli kładziesz na formie 2 przyciski. Pierwszy tworzy dwa dynamiczne edity i wypełnia je napisem textA oraz textB. Zostają one zapamiętane jako składowe private o nazwach editA oraz editB.

Drugi przycisk pobiera ich tekst, łączy i wyświetla za pomocą ShowMessage

0

Mr.YaHooo, Dziękuję. zabieram się do tego kodu. Mam jeszcze jedno pytanie. Potrzebuję to zrobić na formularzu tworzonym dynamicznie. Da się równie prosto?.
Jeszcze raz dziękuję i pozdrawiam. :-)

Mr.Yahooo. Zrobiłem w Lazarusie. OK. Dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0