AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Formular Position speichern

Ein Thema von Sugar · begonnen am 28. Jul 2015 · letzter Beitrag vom 29. Jul 2015
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#1

Formular Position speichern

  Alt 28. Jul 2015, 20:26
Hallo,

ich arbeite daran die Positionen der Formulre meiner Anwendung zu speichern und auch wieder zu lesen.

Im Prinzip ist mein Problem:

Ich speichere den Namen (und weitere Daten) des Formulares in einer Tabelle. Das Feld in dem der Name des Formulares steht ist ein VarChar, also String.

Nun muss ich beim Öffnn der Formulare dieses String in ein TForm (o.ä.) umwandeln um dann Width, Top etc zuzuweisen. Ich scheitere aber daran, den ausgelesenen String in ein TForm umzuwandeln.


Kann mir jemand helfen?
  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
 
#2

AW: Formular Position speichern

  Alt 28. Jul 2015, 21:24
Und warum lässt du die Form die Werte nicht selber speichern und laden?

Der Form sollte ihr Name doch bekannt sein
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)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Formular Position speichern

  Alt 28. Jul 2015, 22:49
Stichwort: Ini-Datei, Registry. Im OnClose speichern und beim OnCreate wieder lesen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.026 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Formular Position speichern

  Alt 28. Jul 2015, 23:13
Sugar,
ein bisschen mehr Infos bitte.

ÄHeiko
Heiko
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Formular Position speichern

  Alt 28. Jul 2015, 23:51
Ich speichere den Namen (und weitere Daten) des Formulares in einer Tabelle. Das Feld in dem der Name des Formulares steht ist ein VarChar, also String. Nun muss ich beim Öffnn der Formulare dieses String in ein TForm (o.ä.) umwandeln um dann Width, Top etc zuzuweisen. Ich scheitere aber daran, den ausgelesenen String in ein TForm umzuwandeln. Kann mir jemand helfen?
Mir ist ebenfalls nicht so recht klar, was dein eigentliches Problem ist. Meinst du wirklich das Property Name, wenn du davon schreibst, den Namen des Formulars speichern und lesen zu wollen? Oder meinst du – was weitaus wahrscheinlicher wäre – das Property Caption, das den Text enthält, der in der Titelleiste eines Formulars angezeigt wird? Wie oben schon festgestellt wurde, ist der Name eines Formulars beim dessen Erzeugung bereits bekannt. Andernfalls könntest du das Formular gar nicht erst erzeugen. Irgendwo hast du da offenbar was vollkommen falsch verstanden, aber was das sein könnte, entzieht sich meiner Kenntnis.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: Formular Position speichern

  Alt 29. Jul 2015, 00:03
http://www.torry.net/pages.php?id=96

Geändert von hathor (29. Jul 2015 um 00:08 Uhr)
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#7

AW: Formular Position speichern

  Alt 29. Jul 2015, 06:44
Hallo Forum,

habe ich mich wirklich so unverständlich ausgedrückt? Entschuldigung.

Also, mal weiter ausgeholt:

Ich erweitere eine ältere interne Anwendung über die unsere User sich schon immer beschwert haben, weil die Fensterpositionen nicht gespeichert werden und man nicht die Möglichkeit hat sich auf den Bildschirmen zurecht gerückten Formulare, dessen Größe und Position zu "merken". Hintergrund: Kommt ein Anruf in der Zentrale an zeigt das Hauptformular den Stammsatz des Anrufers an, soweit erkennbar.

Der User muss dann weitere Fenster "manuell" öffnen um bspw. Historie, Rechnungen etc. im Blick zu haben.

Ich möchte nun, dass der User sich seine drei, vier Fenster öffnen und auf den Bildschirmen platzieren kann UND diese "Ansicht" als Szenario speichern. Öffnet der User dann das Programm, lese ich in der Datenbank was er als Szenario gespeichert hat und öffne und platziere diese Fenster. So die Idee...

Ich dachte mir nun, ich speichere in einer Tabelle den Usernamen, den Namen der Form (Ja, die Eigenschaft NAME),Top, Height, Width, left und ein bit ob das Fenster beim Start sichtbar sein soll.

Was ich nun nicht weiß wie man es umsetzt ist: Ich hole mir den Namen der Form als String, nur wie wandele ich diesen String um, so dass ich damit die Form mit diesem Namen anzeigen kann?

Kurzes "Nebenproblem" noch dazu: Gibt es eine Möglichkeit alle offenen Formulare der Anwendung zu ermitteln?

Also, nochmal Sorry für die vielleicht verwirrende Anfrage. Ich hoffe es ist nun klarer was ich vorhabe.

Danke für die bisherige Hilfe

Gruß
Sugar

[edit]ps. @hathor: Dein Link ist nicht verfügbar

[edit2]:

Zu dem Ermitteln der offenen Formulare habe ich etwas gefunden:

Delphi-Quellcode:
For i:=0 to Screen.FormCount-1 do
   begin
    Screen.Forms[i].Name
Wenn in Name etwas steht ist es eine geöffnete Form meiner App.

Geändert von mkinzler (29. Jul 2015 um 07:53 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
577 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Formular Position speichern

  Alt 29. Jul 2015, 08:33
Was ich nun nicht weiß wie man es umsetzt ist: Ich hole mir den Namen der Form als String, nur wie wandele ich diesen String um, so dass ich damit die Form mit diesem Namen anzeigen kann?
Schreib dir halt eine Funktion, die abhängig vom Namen die richtige Form erzeugt und anzeigt. z.B. ganz einfach so

Delphi-Quellcode:
if FormName='MyFormthen
begin
  MyForm:=TMyForm.Create(Application);
  MyForm.Show;
end;
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#9

AW: Formular Position speichern

  Alt 29. Jul 2015, 08:58
@bcvs

Ich dachte halt es geht eleganter. So muss ich bei jeder neu hinzukommenden Form auch die Abfrage anpassen... das wollte ich umgehen
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.296 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Formular Position speichern

  Alt 29. Jul 2015, 09:19
@bcvs

Ich dachte halt es geht eleganter. So muss ich bei jeder neu hinzukommenden Form auch die Abfrage anpassen... das wollte ich umgehen
dann nimm eine TClassLIst (aus contnrs) und fülle die beim Programmstart mit allen relevanten Formularen

Delphi-Quellcode:
Liste := TClassList;
Liste.Add(TFormXYZ);
-...

wenn Du nun ein bestimmtes Formular suchst:

Delphi-Quellcode:
function FOrmErzeugen(AFormularName: String): TForm;
var
  FormClass: TFormClass;
  idxForm: Integer;
begin
  FormClass := nil;
  for idxForm := 0 to Liste.Count -1 do
  begin
    if Liste.Item[idxForm].ClassName = AFormularName then
      FormClass := Liste.Item[idxForm]
  end;
  if Assigned(FOrmClass) then
    result := FormClass.Create(Application)
  else
    ....

Und wenn dir das ständige Durchlaufen der ClassList zu langsam ist, dann sortiere die Liste nach den Namen, dann kannst Du schneller suchen....

Nachtrag: Wenn Du ein aktuelleres Delphi hast, kannst Du hier auch mit einer generischen Liste arbeiten....
  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 00:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf