AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Panel mit nicht sichtbarem Klickbereich
Thema durchsuchen
Ansicht
Themen-Optionen

Panel mit nicht sichtbarem Klickbereich

Ein Thema von harfes · begonnen am 3. Apr 2024 · letzter Beitrag vom 3. Apr 2024
Antwort Antwort
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
197 Beiträge
 
Delphi 12 Athens
 
#1

Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 10:59
Ich möchte gerne auf einem Panel einen definierten Bereich haben (Rechteck oder Viereck, nix kompliziertes), in dem durch einen Mausklick darauf z.B. ein bis dahin versteckter Button an anderer Stelle des Panels sichtbar wird. D.h. nur wer weiss, wo er hinklicken muss, kommt auch an den ansonsten nicht sichtbaren Button. Ich bräuchte mal eine Idee, wie ich das realisieren könnte - wahrscheinlich sehe ich mal wieder den Wald vor lauter Bäumen nicht, aber so ist es halt gerade...

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:05
Im OnMouseDown bekommst du die Klickkoordinaten und kannst mit PtInRect prüfen, ob sich diese im gewünschten Rechteck befinden.

Ich würde so etwas aber z.B. mit dem Drücken der Strg-Taste kombinieren, damit es niemand zufällig trifft.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
434 Beiträge
 
Delphi 12 Athens
 
#3

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:06
Noch ein bisschen einfacher (aber auch amateurhafter ) geht es auch, wenn du ein weiteres Panel2 in das bestehende Panel1 legst. Setzte die Eigenschaften borderstyle usw. von Panel2 so, dass man es nicht mehr sehen kann. Visisble und Enabled müssen aber auf true stehen bleiben. Dann machst du das OnClick-Ereignis für das nun nicht mehr erkennbare Panel2 und sagst dann: Button1.Visible:=true
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:10
Irgendwo hinklicken und so tun, als wäre da ein Button,
oder irgendwo hinklicken und ein Button wird sichtbar, welcher sich danach anklicken lässt?

Delphi-Quellcode:
// das Erste (wurde in Bereich geklickt)
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Rect(8, 8, 50, 50).Contains(Point(X, Y)) then
    machwas;
end;

// oder das Zweite (wurde da hingecklickt, wo der Knopf mit Visible=False wäre)
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button1.BoundsRect.Contains(Point(X, Y)) then
    Button1.Visible := True;
end;

[edit]
Ja, oder eben mit der Funktion Delphi-Referenz durchsuchenPtInRect, anstatt dem Record-Helper,
oder selbstgemacht if (X > 8) and (X < 50) and (Y > 8) and (Y < 50) then .
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Apr 2024 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:14
Geht auch ohne viel Aufwand in dem man ein TImage entsprechend platziert und auf dessen OnClick reagiert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
197 Beiträge
 
Delphi 12 Athens
 
#6

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:15
@Jaenike: Gute Idee mit der Strg-Kombi - danke!
@Papaschlumpf73: Ebenfalls gut! Mir ist schon klar, dass das ein wenig primmi ist, aber bevor ich eine ganze Nutzerverwaltung mit Rechten für ein so kleines Programm hochziehe, war das eine (zugegeben seeeehr einfache) Idee eines Schutzes.
@himitsu: das entspricht wohl dem Vorschlag von Jaenike - aber ja, genausoetwas war angedacht...danke für den Quelltext...da kann ich noch schneller testen
@Uwe Rabbe: Auch gut!


Danke euch für die Ideen - ich werde mal testen!

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Panel mit nicht sichtbarem Klickbereich

  Alt 3. Apr 2024, 11:30
Geht auch ohne viel Aufwand in dem man ein TImage entsprechend platziert und auf dessen OnClick reagiert.
Oder ein kleines TPanel (BevelOuter=bvNone), TPaintBox, TShape (Brush.Style=bsClear und Pen.Style=psClear) oder oder oder

Image und PaintBox haben den Vorteil, dass man sie im Designer sieht. Oder die Anderen erst zur Laufzeit im Constructor bzw. OnCreate unsichtbar machen.
Wobei PaintBox von den Beiden das Ressourcenschonenstere ist, da eh kein Bild gemalt werden wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Apr 2024 um 11:33 Uhr)
  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 06:26 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