Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Editfs zur Laufzeit auf Frame erstellen (https://www.delphipraxis.net/125101-editfs-zur-laufzeit-auf-frame-erstellen.html)

Samufi 30. Nov 2008 19:31


Editfs zur Laufzeit auf Frame erstellen
 
Hallo,
ich schreibe gerade an einem Programm, wo zur Laufzeit Editfelder erstellt werden sollen. Das aber nicht in der Hauptunit, sondern in einem Frame auf eben dieser. ich habe dazu folgenden Quelltext geschrieben:
Delphi-Quellcode:
unit Ausgabe;

interface

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

type
  TFrame1 = class(TFrame)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var frame1:Tframe1;
implementation

{$R *.dfm}

procedure TFrame1.Button1Click(Sender: TObject);


VAR I:Integer; newEdit:TEdit;
BEGIN
I:=Strtoint(edit1.Text);
      newEdit := TEdit.Create(Frame1);
      newEdit.Name := 'eEingabe'+IntToStr(I);
      newEdit.Parent := Frame1;
      newEdit.Top := I * 30 + 8;
      newEdit.Left := 8;
      newEdit.Width := 100;
      newEdit.Show;
edit1.text:=inttostr(I+1);
end;
Leider passiert aber überhaupt nichts, wenn ich auf den Button klicke. Kann mir jemand sagen, wo der Fehler liegt?
Vielen Dank im Vorraus,
treuergebenst
Samufi

SirThornberry 30. Nov 2008 19:35

Re: Editfs zur Laufzeit auf Frame erstellen
 
wo liegt der Button? auf dem Frame wo auch das Edit drauf soll? Das Stück Quelltext ist bischen zu wenig um da was zu erkennen.

Hawkeye219 30. Nov 2008 20:27

Re: Editfs zur Laufzeit auf Frame erstellen
 
Hallo Samufi,

entferne die Variablendeklaration für das Frame in der Unit Ausgabe und ersetze in der Methode Button1Click alle Verweise auf "Frame1" durch "Self", dann funktioniert das.

Gruß Hawkeye

Samufi 30. Nov 2008 21:21

Re: Editfs zur Laufzeit auf Frame erstellen
 
Der Button, der angeklickt werden soll soll auf der Haupunit liegen. Ich kann aber einen, der auf dem Frame liegt durch einen auf der Hauptunit aufrufen lassen. Insofern sollte das egal sein...
Wenn ich jetzt die Variablendeklaration (also var frame1=Tframe1) entferne, kann ich nicht mehr von außen auf die Elemente auf der Unit zugreifen. Aber ich habs schon probiert, es klappt auch ohne dem Entfernen. Vielen vielen Dank also!!!

mkinzler 30. Nov 2008 21:23

Re: Editfs zur Laufzeit auf Frame erstellen
 
Es war auch gemeint, den Suffix wegzulassen nicht die Komponente zu löschen

Hawkeye219 30. Nov 2008 22:31

Re: Editfs zur Laufzeit auf Frame erstellen
 
Zitat:

Zitat von Samufi
Wenn ich jetzt die Variablendeklaration (also var frame1=Tframe1) entferne, kann ich nicht mehr von außen auf die Elemente auf der Unit zugreifen.

Die (manuell eingefügte?) Variablendeklaration ist meiner Meinung nach überflüssig. Wenn du in der Delphi-IDE ein Frame in ein Formular einbettest, dann erstellt der Designer automatisch eine Variable im Formular für das neue Frame. Nur über diese Variable ist normalerweise der Zugriff auf das Frame möglich. Die zusätzliche Variable in der Unit Ausgabe sollte - sofern du sie nicht selbst initialisiert hast - den Wert NIL enthalten. Dies dürfte dann auch die Ursache des beobachteten Fehlers sein. Die dynamisch erzeugten Edit-Felder haben keinen Parent und sind somit unsichtbar.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz