AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Formular ohne VCL

Ein Thema von FriendOfDelphi · begonnen am 12. Sep 2011 · letzter Beitrag vom 15. Sep 2011
Antwort Antwort
Seite 1 von 3  1 23   
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#1

Formular ohne VCL

  Alt 12. Sep 2011, 12:20
Delphi-Version: 5
Hallo Allerseits,

wie kann ich in einem Delphi-Programm ein 2. Fenster ohne die VCL erstellen?
Das Formular erstelle ich mit:
MeinFenster := TForm.Create(???); Aber was muss an die Stelle der Fragezeichen?
Ist der Owner das erste Formular?

Vielen Dank
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Medium
Online

Registriert seit: 23. Jan 2008
3.682 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:23
TForm ist Teil der VCL. Zu non-VCL gibt es hier in der DP eine Menge Lesestoff, insbesondere Artikel von Luckie!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:24
Wo machst du denn da was ohne VCL?

AnyWay ... als Parameter wird da der Owner erwartet.
Der Owner kümmert sich darum, dass die erzeugte Instanz wieder aus dem Speicher fliegt.

Wenn du dich darum selber kümmerst, dann gib als Parameter einfach Nil an, ansonsten halt den Owner (kann ja auch Application sein) an, der sich um die Freigabe kümmern soll.

Delphi-Quellcode:
var
  MyForm : TForm;
begin
  // Selber kümmern
  MyForm := TForm.Create( nil );
  try
    MyForm.ShowModal;
  finally
    MyForm.Free;
  end;

  // oder

  // Application kümmert sich drum
  MyForm := TForm.Create( Application );
  MyForm.Show;

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Sep 2011 um 12:27 Uhr)
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#4

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:40
Ich habe ein Fenster ganz normal mit der VCL erstellt. Das Hauptfenster. Will ich auch erst einmal so lassen.

Innerhalb des Create des Hauptfensters möchte ich ein 2. Fenster selbst erstellen, dass ich bei Bedarf ein- oder ausschalte und in dem ich zur Laufzeit erzeugte Komponenten anzeigen möchte.

Eigentlich läuft das auch schon alles, solange ich die zur Laufzeit erzeugten Komponenten im Hauptfenster (1. Fenster) anzeige. Dort übergebe ich AOwner und Parent vom Hauptfenster.
Nun möchte ich das Ganze so ändern, dass die zur Laufzeit erzeugten Komponenten alle in einem zusätzlichen, eigenen Fenster dargestellt werden, dass sich auf Knopfdruck öffnet. Der Knopfdruck ist nicht so wichtig. Könnte auch gleich da sein.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Medium
Online

Registriert seit: 23. Jan 2008
3.682 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:45
Dafür würde es doch reichen, einfach ein zweites, leeres Fenster zu erstellen, und dies den dynamischen Komponenten als Parent zu geben. Dann bei Bedarf via Show() einblenden.

Du willst übrigens sehr wohl mit der VCL arbeiten: Die VCL ist die Standard-Klassenbibliothek in Delphi, zu der u.a. auch TForm gehört. Was du meinst, ist der Form-Designer. Dieser ist zwar nicht ohne die VCL nutzbar, die VCL ohne den Designer aber sehr wohl - und das würdest du im Wesentlichen dann tun.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:45
PS: VCL ist nicht der Editor mit dem du dein Formular und deine Oberfläche zusammenklickst.

VCL ist die Bezeichnung einer Bibliothek aller visuellen Komponenten/Controls die Delphi dir zur Verfügung stellt.

Non-VCL bedeutet du erstellt alle Fenster, Buttons usw. mit MSDN-Library durchsuchenCreateWindow oder MSDN-Library durchsuchenCreateWindowEx.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#7

AW: Formular ohne VCL

  Alt 12. Sep 2011, 12:54
Ja, dass stimmt.

Ist es denn sehr viel schwieriger, wenn man das 2. Fenster auch zur Laufzeit erstellen will? Ich dachte, dass das vielleicht nur ein kleine Erweiterung des bisherigen was ich habe darstellt (mit den Komponenten habe ich das ganz gut hinbekommen).
Also komme ich um ein vorher mit dem Form-Designer erstelltes leeres Fenster nicht drumherum?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Formular ohne VCL

  Alt 12. Sep 2011, 13:33
Irgendwie denkst Du zu kompiziert.

Sir Rufo hat in #3 geschrieben, wie Du es lösen kannst.

Einfach zur Laufzeit eine Formularinstanz erzeugen und einer Variablen zuweisen.
Dann kannst Du darauf Deine Controls seztzen und das Formular anzeigen.

Alternativ kannst Du das Formular auch schon zur Designzeit definieren. Dann kannst Du automatisch damit arbeiten.

Im Ergebnis kommt das nahezug auf das gleiche raus.

Mein Tipp: Dynamisch würde ich Formulare eigentlich nur erzeugen, wenn ich nicht weiß, wie viele solcher Formulare ich dann zur Laufzeit brauche oder wenn ich jedes Byte unnötigen Speicherplatz vermeiden will.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Formular ohne VCL

  Alt 12. Sep 2011, 14:22
Vielleicht will er nur nicht dass das Formular automatisch von Delphi erzeugt wird, sondern dies (z.b. wg. Ressourcen) selber tun will. Also unter Projektoptionen aus der "automatisch erzeugen" Liste entfernen und dann wenn benötig mit Create erzeugen und mit Show anzeigen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#10

AW: Formular ohne VCL

  Alt 12. Sep 2011, 14:25
Ich habe es so ausprobiert, wie es "Sir Rufo" beschrieben hat.
Das Problem ist nur, dass zwar ein zweites Fenster angezeigt wird, aber die Komponenten, die ich darin erzeuge nicht. Das Fenster ist leer.
Die Komponentenerstellung zur Laufzeit funktionierte ja vorher für das 1., bzw. Hauptfenster.
Wahrscheinlich mache ich etwas mit dem Owner falsch.
Der Compiler meckert aber nichts an.
Könnt ihr nochmal schauen:

Delphi-Quellcode:
//Formular mache ich wie von "Sir Rufo" beschrieben.
 MyForm := TForm.Create( Application );

//Dann erstelle ich die Komponenten:
  MyScrollBox[0]:=TScrollBox.Create(MyForm.Owner);
  MyScrollBox[0].Parent:=MyForm.Parent;
  [...]
  MyGroupBox:=TGroupBox.Create(MyForm.Owner);
  MyGroupBox.Parent:=MyScrollBox[0];
  [...]
  MyLabel[FiIndexLabel]:=TLabel.Create(MyForm.Owner);
  MyEdit[FiIndexEdit]:=TEdit.Create(MyForm.Owner);
  [...]
  MyLabel[FiIndexLabel].parent := MyGroupBox;
  MyEdit[FiIndexEdit].parent := MyGroupBox;
  [...]
Habt ihr eine Idee, was ich falsch mache?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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 14:34 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