Autor |
Beitrag |
MarcRB1975
      
Beiträge: 131
XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
|
Verfasst: Mi 27.10.10 10:25
Hallo,
ich habe folgende Frage:
Ich habe ein Frame und darauf lasse ich eine TEDit beim Createn erzeugen.
Das muss leider so sein, weil ich das Edit etwas geändert habe. Dass es z.B. nur möglich ist, dass man Zahlen eingeben kann. Dieses Frame + Edit habe ich mir als Komponente "umgewandelt".
FRAGE:
Kann ich, wenn dieses Edit in der Laufzeit den Focus hat und Eingaben getätigt werden, den/die Keys an das Frame "übergeben"?
Ich möchte nämlich dann bei dem Frame – ONKeyPress- die Anweisung geben:
wenn die Enter-Taste bei dem Edit gedrückt wurde, gehe zu der xy-Komponente (setfocus).
Also wenn meine "Frame-Komponente" auf dem Form liegt, würde ich ein ONKeyPress benötigen, das ich dann doppelclicke und dann meine Anweisung eingebe.
Ich würde also für das Frame auch ein ONKey-Press-Ereigniss benötigen. So wie das bei dem Edit. Geht das eigentlich?
Vorab vielen Dank und vielleicht kann mir ja jemand weiterhelfen.
Danke 
_________________ Sokrates: "Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.10.10 10:32
Da musst du das im Frame schon auch selbst unter published deklarieren. 
|
|
MarcRB1975 
      
Beiträge: 131
XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
|
Verfasst: Mi 27.10.10 10:45
Vielen Dank für die schnelle Antwort.
Ja, das habe ich mir auch schon gedacht.
Für strings, integer, DoENTER, DoEXIT ect. kann ich das auch deklarieren. Aber für dieses ONKeyPress leider nicht. Ich weiß nicht, wie ich das als property deklarieren muss.
Vielleicht kannst Du mir ja da weiterhelfen?
_________________ Sokrates: "Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Mi 27.10.10 13:53
Hallo,
eigentlich sollte ich es nicht machen...
Du kannst ein Form so umbiegen, dass es sich auf jedem anderen Container (Form, Panel,...) anzeigen lässt, in dem Du dem Form den entsprechenden Parent zu weist:
Delphi-Quelltext 1:
| frmShow.Parent := pnlClient; |
Das musst Du dann aber zur Laufzeit machen, d.h. Du kannst mit dem Edit nciht zur Entwurfszeit arbeiten. Damit hast Du dann KeyPress...
Was ich aber nicht ganz verstehe: Es gibt tausende halbwegs funktionierender Edits die auf bestimmte Eingaben reagieren, z.b. in der JVCL oder auch bei Torry. Warum nimmst Du denn nicht eine von den vorhandenen? Bzw. wenn Du schon eine "Komponente" bauen willst, warum dann nicht gleich richtig? Der Aufwand um ein IntEdit zu machen ist nicht schwer, glaube es mir. Aber dann hast Du keine solche Krücke....
und übrigens (ist mir erst jetzt aufgefallen): Im OnKeyPress bzw. OnKeyUP/Down des Edit kannst Du auch auf die Enter-Taste reagieren....
Grüße
|
|
MarcRB1975 
      
Beiträge: 131
XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
|
Verfasst: Mi 27.10.10 18:51
Danke für Deine Nachricht.
Ich wäre auch froh, wenn es so eine Komponente, bzw. solche gäbe, die nicht ungefähr so sind, sondern genauso sind wie ich sie benötige.
Ich habe eine Vorstellung, wie etwas sein muss, und dann versuche ich das umzusetzen.
Mit dem OnKeyPress/Down:
ja das geht im Prinzip schon, aber nicht in diesem Fall.
Weil das Edit auf einem Frame liegt. Und eben beim Erzeugen der Komponente, wird erst dann das Edit erzeugt.
Warum das Ganze auf einem Frame?
Ich habe immer wieder den Fall, dass ich diese neue Komponente immer wieder benötige.
Ganz links ist ein Panel mit einem Rahmen, in dem man z.B. Name, Straße, Ort direkt schreiben kann. Das zeigt dann an, was in das Edit kommt. Und dann nach diesem Panel schliesst das erzeugte Edit an. Wenn ich mir keine eigene Komponente mit diesem Aussehen und Funktionen schaffe müsste ich stets:
a) jedesmal ein Panel mit Beschriftung + Edit manuell zusammenschieben
b) bei jedem edit müsste ich dann bei KeyPress sagen: es sind nur Zahlen erlaubt und mache dann daraus ein Datum, oder eine Dezimalzahl ect
c) wenn dann keyPress Enter gedrückt wird, gehe zur Koponente XY weiter.
Ich schätze mal, ich benötige diese Komponente 30-50 mal. Soll ich das dann immer manuell schreiben??? Nein, das muss doch nicht sein.
Aus diesem Grund wollte ich das so machen.
_________________ Sokrates: "Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.10.10 19:25
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 27.10.10 21:49
Klingt für mich eher so als ob Du eine neue registrierte Komponente schreiben solltest die all dies beinhaltet und mit Einstellungen bezüglich des Verhaltens versehen werden kann.
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.10.10 21:58
Wo ist da in diesem Fall der Vorteil gegenüber einem Frame?
Einen Frame muss man nicht extra installieren (wie eine Komponente) und ist trotzdem visuell im Designer.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 28.10.10 01:24
@jaenicke
Das ist etwas persönliches zwischen Frames und mir.
Ich habe unter D5 extrem schlechte Erfahrungen damit gemacht und meide sie seither wie der Teufels das Weihwasser.
Statt Frames verwenden wir Forms die zur Laufzeit gedockt werden wenn es angemessen erscheint, ansonsten eigene Komponenten.
Ein Hilfskonstrukt wir TFrame bei dem ich weder Constructoren noch Destructoren im Griff habe verwende ich ich nur äußerst widerwillig.
LG
Thomas
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 28.10.10 05:47
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Do 28.10.10 06:46
Hi,
bummi hat folgendes geschrieben : |
Ich habe unter D5 extrem schlechte Erfahrungen damit gemacht und meide sie seither wie der Teufels das Weihwasser.
|
ich habe mit D7, D2007 und D2009 eine große Anwendung gebaut, die quasi nur auf Frames aufgebaut hat. Hatte damit keinerlei Probleme....
Grüße
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 28.10.10 09:07
OK mea culpa....
Ich habe die Frames seinerzeit zu den Akten gelegt ohne mich ausreichend mit den Details der Implementierung zu beschäftigen...außerdem bin ich ein Freund abgeschlossener Komponenten.
Zuletzt bearbeitet von bummi am Do 28.10.10 12:48, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 28.10.10 10:42
bummi hat folgendes geschrieben : | außerdem biun ich ein Freund abgeschlossener Komponenten. |
Genau das ist ein Frame im Grunde.
Nur eben mit ein wenig einfacherer Integration was die visuelle Verwendung angeht.
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Do 28.10.10 12:08
Hi,
bummi hat folgendes geschrieben : | OK mea culpa....
|
passt schon. die wurden ja mit Delphi 5 eingeführt - von daher ist es schon (darf ich warscheinlich schreiben?  ) möglich dass die da noch buggy waren *fg*
|
|
|