AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit Form.Create

Ein Thema von Flofu · begonnen am 29. Aug 2004 · letzter Beitrag vom 29. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Flofu

Registriert seit: 26. Aug 2004
Ort: Singhofen
9 Beiträge
 
Delphi 5 Standard
 
#1

Probleme mit Form.Create

  Alt 29. Aug 2004, 00:11
Hi habe ein kleines Problem. Möchte der Form.Create Prozedur noch einen Parameter übergeben zum weiterarbeiten, das lehnt mein Programm ab: der Code:

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject; uebergabe: Byte);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
Panel : array of TPanel;
end;

var
Form2, FormKnopf1, FormKnopf2 : TForm2;

implementation

{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm2.FormCreate(Sender: TObject; uebergabe : byte);
var i : Byte;
begin
for i := 1 to uebergabe do begin
Panel[i] := TPanel.Create(self);
with Panel[i] do begin
parent := self;
top := 100;
left := 25 +((i-1)*35);
height := 33;
width := 33;
caption := IntTo Str(i);
end;
end;
end;

Danke schon mal
  Mit Zitat antworten Zitat
Christopher

Registriert seit: 29. Aug 2003
9 Beiträge
 
#2

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 00:34
Warum das nicht geht, kann ich auch nicht sagen. Anscheinend darf man die Create-Procedure nicht verändern. Aber ein Vorschlag zum Workaround:

Mach dir eine Procedure, die genau die erweiterung deiner Create-Procedure ernthält und rufe in dieser die FormCreate Procedure auf:

Delphi-Quellcode:
/// Dies muss in Die TForm1:
procedure CreateFormWithPanels( uebergabe: Byte);

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen } 
public
Panel : array of TPanel;
end;

var
Form2, FormKnopf1, FormKnopf2 : TForm2;

implementation

{$R *.DFM} 

procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;



procedure TForm2.FormCreate(Sender: TObject);
begin

//Stay
end;


procedure TForm1.CreateFormWithPanels(uebergabe : Byte);
var
  i : Byte;
begin
  Form2 := TForm2.Create();

  for i := 1 to uebergabe do
  begin
    Panel[i] := TPanel.Create(self);
    with Panel[i] do
    begin
      parent := self;
      top := 100;
      left := 25 +((i-1)*35);
      height := 33;
      width := 33;
      caption := IntTo Str(i);
    end;
  end;
end;
  Mit Zitat antworten Zitat
Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 00:43
Ich glaub du hast da einen kleinen Denkfehler
procedure FormCreate(Sender: TObject; ist doch ein Ereignis der Klasse TForm und wird vom Objekt ausgeführt in diesem fall also wenn das Form erstellt wird, wann also willst du da einen weiteren Parameter übergeben wenn du die Funktion gar nicht manuell aufrufst zumindest bei FormCreate macht das meiner Meinung nach keinen Sinn oder

Kannst du mal genau schreiben was du machen willst


Ich bin allerdings auch kein Profi

Gruß

Andreas
Andreas
  Mit Zitat antworten Zitat
Christopher

Registriert seit: 29. Aug 2003
9 Beiträge
 
#4

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 00:55
Stimmt, Andreas hat recht! Das ist mir garnicht aufgefallen Da hilft dann wirklich nur eine genuaere Beschreibung weiter,..
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 01:04
siehe anhang.
Angehängte Dateien
Dateityp: rar bla.rar (5,4 KB, 14x aufgerufen)
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christopher

Registriert seit: 29. Aug 2003
9 Beiträge
 
#6

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 01:15
@ nailor: Was sind denn die Vorzüge deines Beispiels. Ich erkenne den Sinn des Quelltextes nicht (nicht böse gemeint). Ich denke wir können im ohne genaue beschreibung seines Ziels nicht helfen. Sag das nur, damit Flofu das nicht mißversteht und verwirrt wird.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 02:18
Also bei mir geht das, aber nur, wenn ich dort noch ein bissl was Wichtiges einfüge/anpasse...

Code:
[b]procedure[/b] TForm1.FormCreate(Sender: TObject);
[b]var[/b] i : Byte;
[b]begin[/b]
  [color=red]SetLength(Panel, uebergabe);[/color]
  [b]for[/b] i := 1 [b]to[/b] uebergabe [b]do begin[/b]
    Panel[i[color=red] - 1[/color]] := TPanel.Create(self);
    [b]with[/b] Panel[i [color=red]- 1[/color]] [b]do begin[/b]
      parent := self;
      top := 100;
      left := 25 + ((i - 1) * 35);
      height := 33;
      width := 33;
      caption := IntToStr(i);
    [b]end;[/b]
  [b]end;[/b]
[b]end;[/b]
und dann noch ein bissl (rück)optimieren - da ja ein dynamische Array bei 0 beginnt und nicht bei 1.
Code:
[b]procedure[/b] TForm1.FormCreate(Sender: TObject);
[b]var[/b] i : Byte;
[b]begin[/b]
  [color=red]SetLength(Panel, uebergabe);[/color]
  [b]for[/b] i := [color=blue]0[/color] [b]to[/b] uebergabe [color=blue]- 1[/color] [b]do begin[/b]
    Panel[[color=blue]i[/color]] := TPanel.Create(self);
    [b]with[/b] Panel[[color=blue]i[/color]] [b]do begin[/b]
      parent := self;
      top := 100;
      left := 25 + ([color=blue]i[/color] * 35);
      height := 33;
      width := 33;
      caption := IntToStr(i [color=blue]+ 1[/color]);
    [b]end;[/b]
  [b]end;[/b]
[b]end;[/b]

ach ja - nicht vergessen: in Uses muß natürlich auch die ExtCtrls mit drin sein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#8

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 02:43
das mein code eine form enthält, der man im create einen paramter übergeben kann, mit dem man dann machen kann, was man will, also auch eine entsprechende zahl panels erstellen. wenn keine zahl übergeben wird, wird ein defaultwert genutzt.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 12:50
Dem Form1.Create einen Parameter zu übergeben, geht meines wissens nicht.

(Kann sein, dass ich jetzt ins Fettnäpfchen trete, Ich versuchs trotzdem.)
Das was in der Unit erscheint, ist nur die Vorwärtsdeklaration und die Prozedur.
Ergo, müsste der Parameter, wenn man ihn sowohl in der Vorwärtsdeklaration,
als auch in der Prozedur, als auch im Aufruf (Programmquelltext) einbaut,
zum Zeitpunkt des Aufrufs (siehe Programmquelltext) bereits vorhanden sein.
Da zu diesem Zeitpunkt aber so gut wie noch nichts vorhanden ist,
kannst du auch nichts übergeben.

Hoffe das war (in den Grundzügen) richtig.

Die Lösung wäre eine Prozedur, die diese Panels erstellt,
und im Form1.Create aufgerufen wird.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#10

Re: Probleme mit Form.Create

  Alt 29. Aug 2004, 13:26
Das mit der extra Prozedure wäre auch möglich. (siehe jfheins)

Und eine [b]globale/b[] Variable geht auch - so hatte ichs jedenfallt gemacht.


Läuft Beides auf was Ähnliche hinaus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:00 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