AGB  ·  Datenschutz  ·  Impressum  







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

TFrame Container für Wizzard

Ein Thema von QuickAndDirty · begonnen am 1. Jun 2012 · letzter Beitrag vom 2. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#1

TFrame Container für Wizzard

  Alt 1. Jun 2012, 09:51
Ist es möglich einen Container zu bauen der ein Liste von TFrame Nachfahren verwaltet, wobei die Frames im Container bearbeitet werden können aber jeder Frame weiterhin in seiner eigenen DFM Datei gespeichert wird.
Ich frage bevor ich es versuche hier nach, damit Ihr mir sagen könnt ob ich da auf unverrückbare Grenzen stoße...
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TFrame Container für Wizzard

  Alt 1. Jun 2012, 10:00
Zitat:
aber jeder Frame weiterhin in seiner eigenen DFM Datei gespeichert wird.
Solange jeder Frame seine eigene PAS+DFM besitzt ... ja.

Aber das mit dem Container ... der wird wohl nur die "laufenden" Klassen Instanzen bearbeiten können, wärend er sie anzeigt.
Er müßte aber die PAS und DFM direkt bearbeiten, was nicht so einfach/schön sein wird, wenn sie gleichzeitig angezeigt werden sollen.
Kommt aber darauf an wo und wie der Wizzard laufen soll.


- Wenn dein Wizzard im Delphi, als "Plugin" läuft, dann wäre bestimmt es einfach und auch praktikabel machbar.
(z.B. Delphi > Menü > Datei > Neu > Weitere > Delphi-Dateien > Komponente > macht ja auch sowas Ähnliches)

- Wenn er selber als Komponente als/auf eine(r) Form im Formdesigner im Delphi arbeitet ... ich würd's erst garnicht versuchen, wenn nicht grade mein Leben davon abhängt.
(läuft am Ende etwa auf's Selbe hinaus, wie Variante 3)

- Wenn der Wizzard als eigenständiges Programm arbeitet und Delphi dabei möglichst nicht läuft ... klar, aber dann wirst du "manuell" die PAS und DFM erstellen/bearbeiten müssen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Jun 2012 um 10:03 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#3

AW: TFrame Container für Wizzard

  Alt 1. Jun 2012, 11:03
Zitat:
aber jeder Frame weiterhin in seiner eigenen DFM Datei gespeichert wird.
Solange jeder Frame seine eigene PAS+DFM besitzt ... ja.
Ja so dachte ich mir das. Ich will vorhandene TFrame nachfahren (die haben ja eine Pas und eine DFM) einfach in die Liste der Frames holen können. Und die auch indem Container anzeigen und bearbeiten können...und neue erstellen...

Aber das mit dem Container ... der wird wohl nur die "laufenden" Klassen Instanzen bearbeiten können, wärend er sie anzeigt.
Er müßte aber die PAS und DFM direkt bearbeiten, was nicht so einfach/schön sein wird, wenn sie gleichzeitig angezeigt werden sollen.
hm aber es wäre möglich csDesign Kode zu schreiben der das vollbringt, oder?
Kommt aber darauf an wo und wie der Wizzard laufen soll.
Ich dachte ich lege den Container auf ein Formular, füge die Frames die ich habe hinzu, erzeuge ein paar neue und Bearbeite sie, alles in der 2007 IDE (wir haben xe2 aber nur um D2007 nutzen zu können).

- Wenn dein Wizzard im Delphi, als "Plugin" läuft, dann wäre bestimmt es einfach und auch praktikabel machbar.
(z.B. Delphi > Menü > Datei > Neu > Weitere > Delphi-Dateien > Komponente > macht ja auch sowas Ähnliches)
hm, ich weiß nicht so recht.

- Wenn er selber als Komponente als/auf eine(r) Form im Formdesigner im Delphi arbeitet ... ich würd's erst garnicht versuchen, wenn nicht grade mein Leben davon abhängt.
(läuft am Ende etwa auf's Selbe hinaus, wie Variante 3)
Ja so sollte es sein. Welche Probleme siehst du die zu lösen schwierig oder unmöglich sind?

- Wenn der Wizzard als eigenständiges Programm arbeitet und Delphi dabei möglichst nicht läuft ... klar, aber dann wirst du "manuell" die PAS und DFM erstellen/bearbeiten müssen.
Ne ne, das soll eine Designtime und Runtime Komponente sein...soll schon wiederverwendbar sein.
So wie das alte TTabnotebook aus Windows 3.1 Zeiten handhabbar, aber eben mit Frames die dann auch einzeln wiederverwendet werden können...

Zurzeit baue ich Wizards in dem ich das Formular n-Bildschirme groß mache und dann Pannels auf dem formular verteile und diese dann einen nach dem anderen sichbar mache und in position bringen...
der gesammte code liegt dabei in dem Formular...das ist wirklich nicht mehr feierlich.
Ich bin dazu übergegangen Seiten durch Frames zu realisieren damit dieses Formular nicht immer unübersichtlicher wird. Aber es nervt wenn man die Frames jedes mal über Delphi öffnen muss um sie zu sehen und zu ändern...

Also werde ich wohl eine andere Lösung suchen
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 1. Jun 2012 um 11:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TFrame Container für Wizzard

  Alt 1. Jun 2012, 11:33
Ja so sollte es sein. Welche Probleme siehst du die zu lösen schwierig oder unmöglich sind?
Am sichersten wäre es, wenn man die entsprechenden Units direkt der IDE verändern könnte
Dazu dann erstmal rausfinden wie man via OpenToolsAPI diese Units findet, öffnet und vorallem bearbeitet.
Alleine das Finden könnte aufwändig werden ... Suchpfade rausfinden, dann alles absuchen und hoffen man triff die richtige Unit (PAS+DFM).

Dann wird zur Laufzeit ja nicht die PAS/DFM genutzt, sondern die DCU+DFM und wenn man pech hat, dann befindet sich alles auch noch ein einem Package.
Beim Ändern ,üßte man womöglich auch noch sonstwas neu kompilieren, damit es auch wirklich geändert wird.
z.B. beim Schließen des Formulars, der Units oder gar des ganzen Delphis und vorallem beim anschließenden Öffnen wird ja womöglich nicht direkt die PAS geladen, denn deine Kompoente läd ja die kompilierte Version. Wurde also nur die PAS/DFM geändert, bleibt alles beim alten und die Änderungen werden nicht angezeigt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#5

AW: TFrame Container für Wizzard

  Alt 1. Jun 2012, 12:15
Shit!
Jetzt verstehe ich erst worauf du hinaus willst.
Frames werden ja immer kompiliert eingebunden....

Die Dateien zu finden wäre kein Problem, die Pfade würde ich in der Frameliste speichern...hm
Das öffnen der Pas-Datei in der IDE müsste man herausfinden...

Das mit den kompilerten Frames ist schon doof, aber wie schafft es die IDE auf Formularen Controls live abzulegen?

Evtl. bräuchte man so ne Art Kodebrücke, wo halt doch alles in durchgeschalteten Pannels angezeigt und bearbeitet wird und der DFM Code direkt an die eigentlichen Frames weitergereicht wird, bzw. auch von diesen geladen wird...(oooooh ich hasse TReader und Konsorten)

Das Eventöffnen/-erzeugen im Objektinspektor durch doppelklick, lässt sich aber wohl nicht ersetzen durch ein
"Umschalten auf MyFrame1.Pas und dort den Code generieren oder anzeigen"



Die Idee fühlte sich so gut an. Leider ist es wohl doch eher eine Aufgabe für Gexperts, oder so.
Also überlege ich mir etwas ohne Komfort.....aber mit Frames....
Eine Runtime Komponente ist ja einfach.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 1. Jun 2012 um 12:25 Uhr)
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#6

AW: TFrame Container für Wizzard

  Alt 1. Jun 2012, 17:34
Mal ne dumme Frage am rande, aber warum willst du unbedingt Frames verwenden?

Also wenn ich einen Wizard schreiben würde, würde ich mit TNotebook arbeiten.

Frames muss man doch auch Einbinden, im Endeffekt ist die normale Einbindung auch fast eine Art Container für den Frame, und jetzt willst du eine Art Container für eine List von Frames? Vielleicht schaust du dir mal an wie Delphi das mit dem Einbinden eines Frames im Formular macht an.

Aber ich finde dies auch recht aufwendig. Du willst im Endeffekt eine Liste von "Panels" haben, die du leicht wechseln kannst, oder?
Dies macht TNotebook. Gehandhabt wird TNotebook wie ein TabCotrol, also über Indexzahl oder übern Namen.

Also ich würd dir echt TNotebook dafür ans Herz legen.

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TFrame Container für Wizzard

  Alt 2. Jun 2012, 12:31
...ich würde eher zum TPageControl mit zur Laufzeit unsichtbaren TTabsheets raten.

Vorteil: Du kannst zur Designtime bequem wechseln. Beim Start werden die Tabs entfernt und vom Programm entsprechend über Index oder Name angesprochen.

Btw auf den TabSheets können natürlich auch Frames liegen.
Andreas Schachtner
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#8

AW: TFrame Container für Wizzard

  Alt 2. Jun 2012, 12:35
Mal ne dumme Frage am rande, aber warum willst du unbedingt Frames verwenden?

Also wenn ich einen Wizard schreiben würde, würde ich mit TNotebook arbeiten.

Frames muss man doch auch Einbinden, im Endeffekt ist die normale Einbindung auch fast eine Art Container für den Frame, und jetzt willst du eine Art Container für eine List von Frames? Vielleicht schaust du dir mal an wie Delphi das mit dem Einbinden eines Frames im Formular macht an.

Aber ich finde dies auch recht aufwendig. Du willst im Endeffekt eine Liste von "Panels" haben, die du leicht wechseln kannst, oder?
Dies macht TNotebook. Gehandhabt wird TNotebook wie ein TabCotrol, also über Indexzahl oder übern Namen.

Also ich würd dir echt TNotebook dafür ans Herz legen.

Gruß NickelM
Wir haben früher Tnotebook verwendet. Es ist eine Win 3.1 komponente und sie weißt sehr komische verhaltensweisen auf !!! z.b. wenn man die Active Seite direkt eingibt...liefert sie einfach irgend eine zufällige....
Der nachteil von Tnotebook oder eine Panelliste ist ja das alles an DFM und Pascalcode in einer DFM und Pas datei zusammen gefasst ist . Ich möchte aber jede Seite als vollfunktionsfähigen Baustein.
Wir hatten und haben noch genug TNotebook Wizzards...wir wollen die nicht mehr.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#9

AW: TFrame Container für Wizzard

  Alt 2. Jun 2012, 13:24
...ich würde eher zum TPageControl mit zur Laufzeit unsichtbaren TTabsheets raten.

Vorteil: Du kannst zur Designtime bequem wechseln. Beim Start werden die Tabs entfernt und vom Programm entsprechend über Index oder Name angesprochen.

Btw auf den TabSheets können natürlich auch Frames liegen.
Interessant, wie bekommt man die die Tabs unsichtbar?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: TFrame Container für Wizzard

  Alt 2. Jun 2012, 14:01
Interessant, wie bekommt man die die Tabs unsichtbar?
DeinTabSheet.TabVisible := false;
Oft hilft es wenn man das was man machen will einfach mal ins Englische übersetzt
Ralf Kaiser
  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:54 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