Autor Beitrag
MarcRB1975
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131

XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.10.10 10:32 
Da musst du das im Frame schon auch selbst unter published deklarieren. ;-)
MarcRB1975 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131

XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131

XP, Windows7
Delphi 2005 PE, Turbo, RAD Delphi 2009, XE, XE2
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.10.10 19:25 
user profile iconMarcRB1975 hat folgendes geschrieben Zum zitierten Posting springen:
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.
Und genau da musst du auch den Eventhandler zuweisen. Der leitet das dann an eine published property deines Frames weiter. Fertig. ;-)

user profile iconMarcRB1975 hat folgendes geschrieben Zum zitierten Posting springen:
Ich schätze mal, ich benötige diese Komponente 30-50 mal.
Das hört sich schon eher nach dem Problem an. Bist du sicher, dass dein Konzept was deine GUI angeht, sinnvoll ist? So viele Komponenten hören sich nicht danach an. :gruebel:
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.10.10 21:58 
Wo ist da in diesem Fall der Vorteil gegenüber einem Frame? :gruebel:

Einen Frame muss man nicht extra installieren (wie eine Komponente) und ist trotzdem visuell im Designer.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 28.10.10 05:47 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
Ein Hilfskonstrukt wir TFrame bei dem ich weder Constructoren noch Destructoren im Griff habe verwende ich ich nur äußerst widerwillig.
Wie meinst du das mit den Konstruktoren? :gruebel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
  TFrame2 = class(TFrame)
    Button1: TButton;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy(); override;
  end;
//...
constructor TFrame2.Create(AOwner: TComponent);
begin
  inherited;
  Button1.Caption := 'Test';
end;

destructor TFrame2.Destroy();
begin
  inherited;
end;
Funktioniert doch problemlos, ganz exakt wie bei irgendeiner Komponente, die du schreibst.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 28.10.10 06:46 
Hi,

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 28.10.10 10:42 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 28.10.10 12:08 
Hi,

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
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*