![]() |
frame "aktivieren"
moin in die runde,
ich habe in meinem prog 3 frames und habe das problem, dass ich die nicht so "aktiviert" bekomme, also dass darin zb die hints/mouseenter... nur funktionieren, wenn ich in das frame einmal reinklicke. habe schon alles moegliche versucht mit "click eines buttons im frame" per code, etcpp. aber nix funzt. hat jemand ne idee? tks vorab... ...de Schorsch |
AW: frame "aktivieren"
Frame.SetFocus im OnShow des Formulars?
|
AW: frame "aktivieren"
VCL oder FMX?
FMX - HitTest? |
AW: frame "aktivieren"
Was spricht dagegen TForm anstelle von TFrame zu verwenden?
Ich kann mich nicht erinnern wann ich das letzte mal Frames verwendet habe. Komplette Fenster haben keine Nachteile. Außer vieleicht ein paar mehr Bytes im Speicher. |
AW: frame "aktivieren"
Ich gehe tendenziell in genau die andere Richtung: Die Anwendung (und damit auch die GUI) mit Frames partitionieren und nach Bedarf zusammensetzen. Frames werden dynamisch erzeugt, je nachdem welcher gebraucht wird. Sollte es wirklich mal nötig sein, kann auch mal gerade ein Form erzeugt werden, das den Frame aufnimmt. Am Ende gibt es (außer eventueller Vererbung) im Wesentlichen nur das MainForm in der Anwendung und eben diese dynamischen Wrapper z.B. für floating, stay-on-top oder dialogbasierte Forms.
Ehrlich gesagt habe ich das eigentliche Problem auch noch gar nicht verstanden. |
AW: frame "aktivieren"
Zitat:
@Schorsch: Eventuell ist parent der Frames falsch gesetzt. |
AW: frame "aktivieren"
Wenn man den Frame sieht, kann eigentlich der Parent nicht ganz falsch sein.
Ob direkt auf der Form oder z.B. in einem Panel, GroupBox und Anderen, macht eigentlich auch keinen großen Unterschied. |
AW: frame "aktivieren"
Diese Formulierung ist für mich unklar:
Zitat:
Wie so oft wäre ein kleines Beispielprojekt, mit dem man das Problem nachstellen kann, sehr hilfreich. |
AW: frame "aktivieren"
moin in die runde.
erstmal tks fuer die rege beteiligung. vorab: ist ein fmx projekt. also, um das nochmal bissi naeher zu erlaeutern (is halt bissi trickey): ich habe ein mainform, das ein TGridLayout beinhaltet und das hat 3 x dasselbe form jeweils als frame integriert. und ihr muesst euch das in etwa so vorstellen - nehmen wir nen explorer - dass man bis zu 3 "explorer" aufklappen kann (in wirklichkeit wird einfach animiert das TGridLayout um die breite eines forms verbreitert/verschmaelert), sodass ich also max. 3 "explorer" nebeneinander haben und nun per drag and drop mit denen interagieren kann (war bissi schwierig, weil drdr unter fmx nicht so einfach ist ;-). und das form - also jew. die frames - haben eben buttons, etc. drin, die auf onMouseEnter, etc. reagieren. Und die wiederum zeigen im mainform eine jew. info an - das funzt halt auch - manchmal von alleine - aber manchmal eben nur, wenn ich in den frame reinklicke. hab schon alles moegliche versucht mit onmouseenter, onmousemove... im frame und setfocus, ... - doch da laeuft er irgendwie garnicht rein. übrigens: das parent ist das TGridLayout im main und "OnHint" benutze ich auch nicht - mouseenter/leave eben. Update: bevor ich euch jetzt zu viel arbeit macht: in den frames (form) ist wiederum ein tabcontrol mit mehreren tabs und ich habe jetzt soweit rausbekommen, dass wenn ich voraerts in den tabs springe klaut irgendwas den focus, denn beim "zurueckgehen" passiert das nicht. demnach muss ich noch bissi... ...de Schorsch |
AW: frame "aktivieren"
Zitat:
Wenn es ein TForm ist, gibt es hier vielleicht die Lösung: ![]()
Delphi-Quellcode:
SendMessage(MyForm.Handle , WM_NCACTIVATE, 1, 0);
Wobei MyForm das eingebettete Form ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz