AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Editfs zur Laufzeit auf Frame erstellen

Ein Thema von Samufi · begonnen am 30. Nov 2008 · letzter Beitrag vom 30. Nov 2008
Antwort Antwort
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#1

Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 19:31
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 19:35
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 20:27
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
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 21:21
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!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 21:23
Es war auch gemeint, den Suffix wegzulassen nicht die Komponente zu löschen
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Editfs zur Laufzeit auf Frame erstellen

  Alt 30. Nov 2008, 22:31
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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