AGB  ·  Datenschutz  ·  Impressum  







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

Klasse - Formular per hand?

Ein Thema von thomasdrewermann · begonnen am 24. Jun 2003 · letzter Beitrag vom 24. Jun 2003
Antwort Antwort
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#1

Klasse - Formular per hand?

  Alt 24. Jun 2003, 18:20
Hi,
wie kann ein Formular ohne die Visuelle Programmierung erstellen, also prakisch ohne vorher die Komponenten auf das Formular zu ziehen sondern diese erst im construktor des noch nicht visuell erstellten Formulars?

Wie sieht ein einfaches Beispiel aus? Ist das dann schon NONVCL?

Ziel ist es eine Klasse zu programmieren die auf einem Formular basiert und ein Memo auf sich trägt.

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 24. Jun 2003, 18:37
Wenn du die neue Klasse von TForm ableitest dürfte es eigentlich kein Problem sein im (überschriebenen) Konstruktor beliebige Steuerelemente zu erstellen. Beispiel hab ich aber leider auf die Schnelle keines.

NonVCL-Programmierung ist das allerdings dann noch nicht, da du weiterhin die Objekte (z. B. TForm, TMemo, ...) verwendest, die die WinApi-Funktionen kapseln. Bei der NonVCL-Programmierung werden nur die Grundbefehle von Pascal und direkte Aufrufe von WinAPI-Funktionen (wie CreateWindowEx zum Erzeugen von Fenstern) genutzt.

Dies wird übrigens auch in den hervorragenden API-Tutorials von Luckie erklärt.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Klasse - Formular per hand?

  Alt 24. Jun 2003, 18:40
Zitat von thomasdrewermann:
Ist das dann schon NONVCL?
Nur wenn du auf die VCL verzichtest, dewegen auch "No VCL".


Delphi-Quellcode:
type
  TMyForm = class(TForm)
  private
    FMemo: TMemo;
  public
    constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
    property Memo: TMemo read FMemo;
  end;

constructor TMyForm.CreateNew(AOwner: TComponent; Dummy: Integer); override;
begin
  inherited;
  FMemo := TMemo.Create(Self);
  FMemo.Parent := Self;
end;

...
procedure CreateMyForm(Lines: TStrings);
var Form: TMyForm;
begin
  Form := TMyForm.CreateNew(Application);
  try
    Form.Memo.Lines.Assign(Lines);
    Form.ShowModal;
  finally
    Form.Free;
  end;
end;
Das TMyForm.CreateNew() ist notwendig da bei TMyForm.Create eine Resource TMYFORM gesucht wird, die nicht vorhanden ist und somit zu einer Exception führen würde.
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#4
  Alt 24. Jun 2003, 18:56
Hi,
irgendwie kapiere ich nicht wo die Methode "CreateNew" herkommt, wurde die von TForm vererbt?

Nach dem ich das Formular mit der Deklaration in das Programm eingebunden haben und mit "CreateNew" erstelle kommt auch ein Formular, das ist allerdings leer

MFg
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 24. Jun 2003, 19:20
CreateNew wird von TCustomForm vererbt.

Dass das Memo nicht erscheint dürfte daran liegen, dass es in Create erzeugt wird, aber CreateNew aufgerufen wird. Man müsste also CreateNew überschreiben.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6
  Alt 24. Jun 2003, 19:41
Stimmt. Anstatt Create muss man CreateNew nutzen.

Ich habe es oben ausgebessert.
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#7
  Alt 24. Jun 2003, 19:47
Hi,
was ist dennd er Unterschied zwischen Create und CreateNew?

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 24. Jun 2003, 21:17
Create läd die Formulardaten aus den .dfm Dateien. CreateNew hingegen überspringt diesen Schritt. Wenn du nun eine Klasse von TForm ableitest und dies nicht mit Hilfe des Formulardesigners (Delphi) machst, so hast du keine .dfm-Datei dafür. Also würde ein Aufruf von Create zu einem Fehler führen. Das kannst du auch ohne weiteres ausprobieren.
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#9
  Alt 24. Jun 2003, 21:22
Damit sind all meine Fragen aus dem Weg geräumt.

Bis zum nächsten mal

DANKE an alle

MFG
Thomas
Sport ist mord...
  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 04:30 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