AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Funktion in selbst erstellter Form

Funktion in selbst erstellter Form

Ein Thema von DelphiUser1 · begonnen am 29. Sep 2012 · letzter Beitrag vom 3. Okt 2012
Antwort Antwort
Seite 1 von 3  1 23   
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#1

Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 15:22
Hallo alle miteinander
ich habe in der Klasse Treg=class(TForm) eine Form erstellt (myform). Diese wird während der Laufzeit erzeugt. In Unit1 habe ich eine function eingebaut, mit der ich ein Passwort verschlüsseln kann(function XorStr(const Text: string; Key: Integer): string). Der gesamte Quellcode für myform steht unten. Leider ändert sich Label3 nicht in die Verschlüsselung sondern die caption bleibt leer. Kann mir da jemand helfen?


Delphi-Quellcode:
myform:=TReg.CreateNew(Self);
with myform do
  begin
    visible := true;
    Caption := 'Registrieren(2/2)';
    Left := Form1.Left;
    Top := Form1.Top;
    ClientHeight := Form1.ClientHeight;
    ClientWidth := Form1.ClientWidth;
    Autoscroll:=false;
    Button1 := TButton.Create(myForm);
    end;
    With Button1 do
    begin
      parent := myForm;
      visible := true;
      caption := 'Prozess abschliessen';
      width:=120;
      left := 150;
      top := 150;
      OnClick := Button1Click;
    end;
    Edit1 := TEdit.Create(myForm);
    With Edit1 do
    begin
      parent := myForm;
      visible := true;
      left := 150;
      top := 50;
    end;
    Edit2 := TEdit.Create(myForm);
    With Edit2 do
    begin
      parent := myForm;
      visible := true;
      left := 150;
      top := 100;
    end;
    Label1:=TLabel.Create(myform);
  with Label1 do
  begin
  parent := myForm;
  Font.Color:=clblack;
  visible := true;
  left := 20;
  top := 100;
  Caption := 'Benutzername:';
  Font.Size:=12;
  end;
  Label2:=TLabel.Create(myform);
  with Label2 do
  begin
  Parent:=Myform;
  Visible:=true;
  left := 20;
  top := 50;
  Caption := 'Passwort:';
  Font.Size:=12;
  end;
  Label3:=TLabel.Create(myform);
  with Label3 do
  begin
  Parent:=Myform;
  Visible:=True;
  left := 200;
  top := 50;
  Caption := XorStr(Edit1.Text, 21);
  Font.Size:=10;
  Font.Color:=clblack;
  end;
   end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.533 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 15:29
In Edit1 steht ja auch nichts drin, was willst Du denn da verschlüsseln? Und wieso entwirfst Du das Formular nicht ganz normal in der IDE, erzeugen kannst Du es ja immer noch dynamisch?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#3

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 16:51
Aha wie entwerfe ich es den in der IDE ?
Ja also das war ja echt ein blöder Fehler von mir. Das Problem ist das er jetzt gar nichts mehr macht wenn man auf den Button der selbst erstellten Form klickt, obwohl ich nichts verändert habe??
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 17:37
Aha wie entwerfe ich es den in der IDE ?
Was ist das für eine Frage? Normal über den Form-Designer?

Datei -> Neu -> VCL-Formularanwendung

Dann nochmal

Datei -> Neu -> VCL-Formular

und da hast du in der Formularansicht doch (je nach Delphi-Version) oben oder rechts die ganzen Komponenten, die du auf die Form ziehen kannst?

Zum Beispiel ein Screenshot von Turbo Delphi. So ähnlich sieht's auch in Delphi XE aus. Da hast du bei 6 die verfügbaren Komponenten. In älteren Delphi-Versionen sind die Komponenten bei 1.
http://0.tqn.com/d/delphi/1/0/U/a/turbo_delphi_ide.gif

Wenn du so ein neues Projekt angelegt hast, ziehst du in der Form2 einfach ein TLabel, TEdit und TButton auf die Form. In den Code schreibst du bei TForm2 in Public "Passwort: String;", das sollte dann so aussehen:
Delphi-Quellcode:
unit Form2;

interface

uses
  ...

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
  private
    { ... }
  public
    { ... }
    Passwort: String;
  end;

var
  Form2: TForm2;

implementation

end.
Dann doppelklickst du im Form-Designer (Umschalten zw. Code und Form ist immer F12) auf Button1. Dadurch wird ein Event für den Button1 angelegt:

Delphi-Quellcode:
implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  // ...
end;

end.
Dort schreibst du rein:

Delphi-Quellcode:
implementation

procedure TForm2.Button1Click(Sender: TObject);
begin
  Passwort := Edit1.Text;
  Close;

  // Alternativ, wenn du weißt wie
  // Passwort := XorStr(Edit1.Text);
end;

end.
Dann wechselst du zurück auf Unit1 bzw Form1. Ziehst dort einen TButton auf die Form, damit das Ganze ungefähr so aussieht:
Delphi-Quellcode:
unit Form1;

interface

uses
  ...

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { ... }
  public
    { ... }
  end;

var
  Form1: TForm1;

implementation

// WICHTIG!
uses
  Unit2;

end.
Dann doppelklickst du wieder auf den Button, Code:

Delphi-Quellcode:
implementation

// WICHTIG!
uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
  ShowMessage(Form2.Passwort);
end;

end.
Fertig. Wenn du dich nun nicht zu ... anstellst, sollte das laufen.

Geändert von nuclearping (29. Sep 2012 um 20:25 Uhr)
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#5

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 22:03
haha erstmal danke an nuclearping für die Mühe, aber ich bin jetzt auch schon ein Jahr im Programming dabei, also wie ich eine neue Form anlege, ist mir dann doch klar, aber Auftrag war es die Form während der Laufzeit zu erzeugen. Der Begriff IDE war mir wahrscheinlich nur nicht so geläufig
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 22:33
Man könnte sich aber auch fragen, wieso jemand eine statische Form dynamisch erstellen zusammenbauen will, wo doch die statische Erstellung (als DFM) wesentlich einfacher ist?

Gut, wenn man unbedingt will, kann man sich natürlich gerne mehr Arbeit machen, als nötig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Sep 2012 um 22:36 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 22:39
haha erstmal danke an nuclearping für die Mühe, aber ich bin jetzt auch schon ein Jahr im Programming dabei, also wie ich eine neue Form anlege, ist mir dann doch klar, aber Auftrag war es die Form während der Laufzeit zu erzeugen. Der Begriff IDE war mir wahrscheinlich nur nicht so geläufig
Die Form zur Laufzeit zu erzeugen könnte dann zB so aussehen:
Delphi-Quellcode:
// Deine Hauptform
unit Form1;

interface

uses
  ..., Unit2;

type
  TForm1 = class(TForm)
    ...
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { ... }
    FForm2: TForm2;
  public
    { ... }
  end;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Self);
  with Form2 do
    try
      Form2.ShowModal;
      // ...
    finally
      FreeAndNil(Form2);
    end;
end;

end.
Dynamisch zur Laufzeit erstellen heisst nicht, sie auch selbst zusammenzubasteln, sondern nur die Instanz zur Laufzeit zu erzeugen.
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#8

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 23:08
Ja das ist natürlich richtig, aber es bestanden genaue Vorgaben, also es soll schon so gemacht werden. das Seltsame ist das gerade die Onclick-Methode des Buttons auf der erzeugten Form nicht mehr geht. also der Code für die Form ist ja oben und hier nochmal der Quelltext für das Onclick Ereignis, wer findet den fehler
Delphi-Quellcode:
procedure TReg.Button1Click(Sender: TObject);
var sl, sd, sf: TStrings;
i:integer;
begin
Label3.Caption:=XorStr(Edit1.Text, 21);
  sl := TStringlist.Create;
  sf :=TStringlist.Create;
  sl.add(Label3.Caption);
  sl.savetofile(path+ Edit2.Text +'.txt');
  sd :=TStringlist.Create;
sd.Add(Form1.Edit3.Text);
sd.Add(Form1.Edit4.Text);
sd.Add(Form1.MaskEdit1.Text);
sd.Add(Form1.Edit6.Text);
sd.Add(Form1.ComboBox3.Text);
  for i := 0 to Form1.Checklistbox1.Items.Count-1 do
      if Form1.Checklistbox1.Checked[i] then
      sf.Add(Form1.Checklistbox1.Items[i]);
  sd.SaveToFile(path+'Info'+Edit2.Text+'.txt');
  sf.SaveToFile (path+'Hobbys'+Edit2.Text+'.txt');
  sd.free;
  sl.free;
  sf.free;
  Showmessage ('Du hast erfolgreich ein Konto angelegt');


  if MessageDlg('Willst du dich jetzt anmelden?', mtConfirmation, [mbyes, mbno], 0) = mrYes then
  begin
  Form1.Visible:=True;
  Form1.PageControl1.ActivePageIndex:=0
  end else
  Form1.Close;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Funktion in selbst erstellter Form

  Alt 29. Sep 2012, 23:57
Delphi-Quellcode:
   Autoscroll:=false;
    Button1 := TButton.Create(myForm);
//end;//das muß raus
    With Button1 do
    begin
      parent := myForm;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Funktion in selbst erstellter Form

  Alt 30. Sep 2012, 00:22
Ja das ist natürlich richtig, aber es bestanden genaue Vorgaben, also es soll schon so gemacht werden.
Was? Euch wurde gesagt, dass ihr die Inhalte der Form per Code erstellen müsst? Wer verlangt denn sowas absurdes?

Ich meine es ist gut zu wissen, wie es funktioniert und wenn man es kann. Aber das jemandem als (Haus?)Aufgabe zu Lernzwecken aufzubürden ... Ich weiß ja nicht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:27 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