Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zugriff auf die form sperren während mainmenü geöffnet ist (https://www.delphipraxis.net/107842-zugriff-auf-die-form-sperren-waehrend-mainmenue-geoeffnet-ist.html)

19Tobi91 3. Feb 2008 11:13


zugriff auf die form sperren während mainmenü geöffnet ist
 
Hi @ all!

ich möchte bei meinem Programm verhindern, dass ein Zugriff auf die Form/auf eine komponente nicht möglich ist solange das mainmenu geöffnet/aktiviert ist. Ist das möglich?
(es reicht auch vollkommen aus wenn man die mausklicks sperrrt bzw. ereignisse, wie onclick,onmousemove,onmouseover,onmouseup nicht zulässt)
Ein kleiner Source Quode als Beispiel wäre hilfreich da ich noch nicht sehr lange mit delphi arbeite...

Vielen Dank schonmal im Vorraus für jede Antwort!

Blackheart 3. Feb 2008 11:26

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Vieleicht solltest Du dazu schreiben warum das so sein soll, oder was Du damit bezweckst.

19Tobi91 3. Feb 2008 11:48

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
hmm okay also die antwort is realtiv simpel. Ich schreibe eine Oberfläche für ein Damespiel. Nun habe ich die Figuren als TIAEverButtons realisiert und ihnen mittels onmousedown,onmousemove,onmouseup eine Drag&Drop-Funktion verliehen. Allerdings habe ich das Problem, dass wen ich das wenn ein Rgaister meines MainMenus geöffnet ist und ich gleichzeitig eine Figur anklicke folgende Fehlermemldung ausgeben wird: "Zugiffsverletzung bei Adresse 0042A088 in Modul 'dame.exe'. Lesen von Adresse 00000040."
Ich hoffe ich konnte weiterhelfen.
Danke schonmal für die Antwort! =)

Blackheart 3. Feb 2008 12:10

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Dann solltest Du vieleicht erst einmal versuchen diesen Fehler zu beheben als den Zugriff auf die Form zu verhindern.

19Tobi91 3. Feb 2008 12:22

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
hab ich schon versucht, allerdings wäre es mir sowieso lieber, dass man die figuren nicht verschieben kann, solange das mainmenu geöffnet ist. Falls es allerdings sehr aufwendig ist die Form/die Ergeinisse zu sperren, kann ich natürlich mal den source code posten und Du kannst versuchen den Fehler zu beseitigen, weil ich bin da echt mit meinem Latein am Ende, aber wie gesagt mir wäre es lieber den Zugriff auf die Form zu sperren. Kommt halt darauf an mit wieviel Aufwand das ganze verbunden ist.

19Tobi91 4. Feb 2008 10:34

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
so ich hab mal folgendes code-schnipsel gefunden, dass das überpüfen,ob das TMainMenu geöffnet ist, möglich macht:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    // ...
  private
    IsMenuOpen: Boolean;
    procedure WMMENUSELECT(var message: TWMMENUSELECT); message WM_MENUSELECT;
  end;
 
implementation

procedure TForm1.WMMENUSELECT(var message: TWMMENUSELECT);
begin
  inherited;
  IsMenuOpen := not ((message.MenuFlag and $FFFF = 0) and (message.Menu = 0));
end;
quelle: http://www.swissdelphicenter.ch/de/showcode.php?id=956 von swissdelphicenter.ch

allerdings ganz verstehen tu ich den code nicht und leider war auch keine Erklärung dabei. Mich würde interssieren ob es hier möglich ist eine bollean oder so einzubauen die solange auf true ist solange das TMainMenu geöffnet ist.
Oder vielleicht ist hiermit sogar direkt möglich eine bestimmte Prozedure zu sperren solange das TMainMenu geöffnet ist.
Hoffe, dass mir jemand weiterhelfen kann...

OregonGhost 4. Feb 2008 10:53

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Wenn der Benutzer bei geöffnetem Menü auf dein Formular klickt / Drag&Drop einleitet, schließt sich das Menü doch von selbst. Wo gibt es denn da ein Problem? Zumal es eigentlich keinen Unterschied für das Formular macht, ob ein Menü geöffnet ist oder nicht.

Wenn deine Button-Komponente in so einem Fall abstürzt, kann ich dir einen guten Tipp geben: Wirf sie weg.

19Tobi91 4. Feb 2008 11:13

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
das hät ich schon längst gemacht wenn ich ne alternative hätte...weil die komponente ist echt vielseitg und sehr praktisch...außerdem hab ich keine lust das ganze programm nochmal komplett umzuschreiben..aber du hast schon recht: bei standard komponenten tritt der fehler nicht auf....hm weis blos net wo ich eine gute alternative herbekomm...
ich bräuchte eigentlich ein shape, dass noch mehr formen annehmen kann und wenn möglich noch bitmaps aufnehmen kann, wie ein Bitbutton, aber am wichtigsten ist wie gesagt die zusätzlichen formen...sollte halt so was wie ein kreuz dabei sein, was ne dame darstellt...kennt jemand so ne komponente oder kann man sowas auch anderes erreichen?

OregonGhost 4. Feb 2008 11:24

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Image?

19Tobi91 4. Feb 2008 11:46

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
image ist nicht so gut weil ich dann hinter dem kreis/kreuz einen weißen hintergrund hab, wenn man den wegbekommen könnte wärs super/perfekt^^, ansonsten nicht geeignet...

OregonGhost 4. Feb 2008 12:00

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Vielleicht mal die Eigenschaften Transparent und TransparentColor anschauen. Oder einfach keine Komponenten verwenden, sondern selbst zeichnen.

19Tobi91 4. Feb 2008 12:04

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
und wie kann man selbst gezeichnets mit drag&drop verschieben?

OregonGhost 4. Feb 2008 12:09

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
Ich glaube, genau genommen wäre das der Zeitpunkt, einen neuen Thread zu öffnen, denn hier gilt eigentlich neue Frage, neuer Thread.

Für manuelles Drag&Drop musst du dir bloß die Positionen deiner Objekte merken (musst du fürs Zeichnen ja eh) und wenn dann die Maustaste gedrückt wird, merkst du dir das, das Objekt das verschoben wird und die relative Position zum Ursprung des Objekts. Im Mousemove zeichnest du dann, falls du gerade beim Verschieben bist, das Objekt an der Mausposition neu und wenn die Maus losgelassen wird, prüfst du, ob es sich um eine gültige Zielposition handelt und wenn ja, verschiebst das Objekt.

Für ein Damespiel würde ich jedoch anstelle von Drag&Drop ein zweistufiges Verschieben vorziehen, also erst den Stein anklicken und dann seine Zielposition. Wäre mir als Spieler jedenfalls intuitiver.

19Tobi91 4. Feb 2008 12:52

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
so was hab ich auch schon geschrieben aber mein lehrer hät gern dass alles nach seiner nase tanzt und er möchte ein drag&drop mit kompnenten aber er hat sich auch nicht die freiheit genommen mir zur erklären wie ich das mit den komponenten realisieren soll...
aber ich muss uach nur eine oberfläche schreiben, mein leherer wünscht sich nämlich dass das programm zweigeteilt wird...Visualiseriung und daten..kommunikation erflolgt über eine schnittstelle..ach na ja ich glaub ich werds mal versuchen indem ne shape komponente ableite *seufz*

19Tobi91 6. Feb 2008 16:22

Re: zugriff auf die form sperren während mainmenü geöffnet i
 
so habe jetzt ne super shape komponente gefunden bei dem per canvas soger induvieduelle Formen möglich sind, super sache und keine fehler mehr! thx für alle antworten und tipps =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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