AGB  ·  Datenschutz  ·  Impressum  







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

(dumme Frage) String => TForm?

Ein Thema von SneakyBagels · begonnen am 10. Jun 2017 · letzter Beitrag vom 11. Jun 2017
Antwort Antwort
SneakyBagels
(Gast)

n/a Beiträge
 
#1

(dumme Frage) String => TForm?

  Alt 10. Jun 2017, 21:44
Ja die Frage ist echt sehr dumm aber ich habe schon oft gesehen, dass es gute Lösungen für komische Problemstellungen gab.
Ist es möglich von einem String das passende TForm zu bekommen ohne nebenbei eine Liste der TForms (array) zu führen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 22:02
Existiert das Form bereits? Dann kannst du über
Delphi-Quellcode:
for I := 0 to Screen.FormCount - 1 do begin
  if Forms[I].Name = 'MyFormNamethen begin
  end;
end;
das gesuchte Form finden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#3

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 22:08
Screen.Forms[I].Name Das kannte ich noch nicht.

Wenn das so ist, dann brauche ich die Schleife in meinem Fall nicht.

Es ist so:
ich modifiziere meine Editfelder und hängen rechts ein Shape sowie ein Label dran.
Wenn man das Label klickt, wird das Edit geleert oder sonst irgendeine andere spezifische Aktion wird ausgeführt.

Der Label-Name ist etwa 'ClearEditLbl_' + IntToStr(i) + '_NameDesEdits'
Im OnClick des Labels pflücke ich nun Name auseinander und erhalte ein Array mit 3 Teilen. Teil 2 könnte ich dann Screen.Forms[] übergeben.

Problem gelöst. Danke.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 22:55
Zitat:
Ist es möglich von einem String das passende TForm zu bekommen ohne nebenbei eine Liste der TForms (array) zu führen?
Ohne nicht, aber Delphi führt soeine Liste bereit.

Teil 2 könnte ich dann Screen.Forms[] übergeben.
Nein!

Die Indize sind nicht fest und Ändern sich ständig.
Erstmal beim Erstellen/Freigenben von Forms
und dann schiebt die VCL das aktive Fenster immer auf Position 0, womit sich die Reihenfolge in der Liste ändert.

Zitat:
Der Label-Name ist etwa 'ClearEditLbl_' + IntToStr(i) + '_NameDesEdits'
Man glaubt es nicht, aber im TLabel gibt es ein Control-Property, wo man das Edit angeben kann.
Erstmal bekommt dann das Edit den Fokus, wenn man seinen Namen (das Label) anklickt
und in deinem Fall kann man mit diesem Property direkt auf das Edit zugreifen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (10. Jun 2017 um 22:57 Uhr)
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#5

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 23:06
Zitat:
und dann schiebt die VCL das aktive Fenster immer auf Position 0, womit sich die Reihenfolge in der Liste ändert.
Gab es darüber nicht erst letztens ein Thema? Das wusste ich gar nicht, dass hier alles von Zeit zu Zeit auf Position 0 geschoben wird. Gut zu wissen!
Damit wäre mein Vorhaben also erstmal erledigt.

Zitat:
Man glaubt es nicht, aber im TLabel gibt es ein Control-Property, wo man das Edit angeben kann.
Erstmal bekommt dann das Edit den Fokus, wenn man seinen Namen (das Label) anklickt
und in deinem Fall kann man mit diesem Property direkt auf das Edit zugreifen.
Gibt es das auch für TPanels? Ich sehe gerade ich nutze ein TPanel und kein TLabel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 23:09
Nee, aber wenn das Panel im OI auf die Form gesetzt wurde, bzw. man eine Form als Owner gab, dann alle Forms durchlaufen und da drauf mit FindComponent nach dem Panel suchen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#7

AW: (dumme Frage) String => TForm?

  Alt 10. Jun 2017, 23:15
Ich machs aktuell so

- Panel erzeugen und neben Edit positionieren. Name des Panels enthält das dazugehörige Edit
- OnClick zuweisen
- im OnClick frage ich Name ab und suche so mit FindComponent nach dem Edit.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: (dumme Frage) String => TForm?

  Alt 11. Jun 2017, 00:39
Nimm' statt des TPanel ein TLabel.
In die Eigenschaft FocusControl schreibst Du den Namen des zugehörigen TEdits rein.

Im OnClick des TLabel brauchst Du dann nur auf TLabel.FocusControl zugreifen und hast Dein TEdit (oder was Du auch sonst da so zugewiesen hast).
Das dürfte deutlich einfacher, flexibler und pflegeleichter sein, als TPanel und dann über Namenskonventionen suchen gehen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: (dumme Frage) String => TForm?

  Alt 11. Jun 2017, 01:32
Nja, im Prinzip hast du da doch eine "Komponente, welche das Verhalten kapselt und diese Komponente merkt sich die Referenzen auf das, was sie erstellt hat und auf das zugewiesene Edit.
Und schon muß garnichts gesucht werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: (dumme Frage) String => TForm?

  Alt 11. Jun 2017, 07:59
In die Eigenschaft FocusControl schreibst Du den Namen des zugehörigen TEdits rein.

Im OnClick des TLabel brauchst Du dann nur auf TLabel.FocusControl zugreifen und hast Dein TEdit (oder was Du auch sonst da so zugewiesen hast).
Und funktioniert auch mit Tastatur-Shortcuts.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 11:28 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