Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Suche Idee, Button soll Options Fenster anzeigen/verbergen (https://www.delphipraxis.net/137055-suche-idee-button-soll-options-fenster-anzeigen-verbergen.html)

Stormy 13. Jul 2009 14:29

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Wenn du folgendes versuchst

Delphi-Quellcode:
//nach dem öffnen des Fensters
Button.Tag := 1;
//dann im OnExpanded
if Button.Tag = 0 then
//dein code zum öffnen
else Button.Tag := 0;
Ansonsten Poste mal den Code von den beiden Events dann versteht man besser was du meinst.


Gruß
Stormy

fajac 13. Jul 2009 14:30

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Hallo,
du könntest, für den Fall dass das Fenster von der Button.Expanded Methode ausgeblendet wird, vorher den Event auf nil setzen, und wenn du das Fenster erneut öffnest, dann wieder auf deine Ereignismethode.

Roaster 13. Jul 2009 14:40

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Zitat:

Zitat von hoika
dann packe dein Options-"Form" auf ein Panel unterhalb des Expanded-Buttons,
das Panel ist am Anfang unsichtbar.
Per Button-Klick wird es sichtbar.

Das hatte ich zuvor schon, nur wie geschrieben ist es jetzt ein wenig zu unübersichtlich geworden um alle Radiobuttons und Checkboxen dort unterzubringen. Ausserdem würde dann aufgrund der Größe des Panels der Rest des Parentfensters aus dem sichtbaren Bereich rausgeschoben werden.

Zitat:

Zitat von hoika
Ich finde diese Anforderung eh doof ;)
Ich klicke aus Versehen daneben und das "Form" ist weg, ne!.

Es sollte ja auch nicht so der klassische Optionsdialog für die Anwendungseinstellungen sein, sondern eher um auf die Schnelle mal die Suchoptionen zu modifizieren.

Zitat:

Zitat von hoika
Mal was anderes. Was benutzt als Komponente für den "Objekt-Inspektor" ?

TNextInspector von Bergsoft: Bergsoft - NextInspector

Roaster 13. Jul 2009 14:44

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Zitat:

Zitat von Stormy
Ansonsten Poste mal den Code von den beiden Events dann versteht man besser was du meinst.

Hier bitteschön, zuerst der Code, der das Erzeugen des Optionsfensters auslöst:

Delphi-Quellcode:
procedure TForm2.OnOptionClose(Sender : TObject);
begin
  MyQuickButton1.Expanded := False;
end;

procedure TForm2.MyQuickButton1Expanded(Sender: TObject; Expanded: Boolean);
var
  oPnt: TPoint;
begin
  oPnt := MyQuickButton1.ClientToScreen(Point(0, MyQuickButton1.Height));
  FOptions := TfrmOptions.Create(Nil);
  FOptions.Top := oPnt.Y;
  FOptions.Left := oPnt.X;
  FOptions.FreeOnRelease;
  FOptions.OnCallback := OnOptionClose;
  FOptions.Show;
end;
Und zum anderen die relevanten Zeilen aus meiner Button-Komponente:
Delphi-Quellcode:
procedure TMyQuickButton.SetExpanded(const Value : Boolean);
begin
  if FExpanded <> Value then
  begin
    SetExpandedImg(not FExpanded);
    FExpanded := Value;
    CallEvents;
    Invalidate;
  end;
end;
...
procedure TMyQuickButton.CallEvents;
begin
  // Call expanded event
  if FExpanded and Assigned(FOnExpanded) then
    FOnExpanded(Self, FExpanded);
  // Call collapsed event
  if not FExpanded and Assigned(FOnCollapsed) then
    FOnCollapsed(Self, FExpanded);
end;

procedure TMyQuickButton.Click;
var
  Form: TCustomForm;
begin
  SetExpandedImg(not FExpanded);
  FExpanded := not FExpanded;

  CallEvents;

  Form := GetParentForm(Self);
  if Form <> nil then
    Form.ModalResult := ModalResult;
  inherited;
end;

mirage228 13. Jul 2009 14:44

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Du könntest den Button mit einer Delphi-Referenz durchsuchenAction versehen. In OnUpdate wird "Expanded" je nach "Visible" Eigenschaft des Optionsfenster gesetzt und beim OnExecute schließt Du das Fenster bzw. negierst die "Visible" Eigenschaft...
Edit: Für FOptions würde sich dann ja ggf. ein "Singleton" anbieten...

Roaster 13. Jul 2009 15:04

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Zitat:

Zitat von mirage228
Du könntest den Button mit einer Delphi-Referenz durchsuchenAction versehen. In OnUpdate wird "Expanded" je nach "Visible" Eigenschaft des Optionsfenster gesetzt und beim OnExecute schließt Du das Fenster bzw. negierst die "Visible" Eigenschaft...

OK, das Action property habe ich nochmals schnell im Button implementiert. Nur so ganz erschließt sich mir noch nicht der Sinn:
In Action.OnUpdate wird Button.Expanded je nach Optionfenster.Visible gesetzt? So weit so klar,
Warum bei Action.OnExecute das Fenster schließen? Wann erstelle ich denn dann deiner Meinung nach das Optionsfenster?

Zitat:

Zitat von mirage228
Edit: Für FOptions würde sich dann ja ggf. ein "Singleton" anbieten...

So, jetzt hast du mich komplett verwirrt: Singleton was issn das für'n Ding?

mirage228 13. Jul 2009 16:27

Re: Suche Idee, Button soll Options Fenster anzeigen/verberg
 
Ja mit Schließen meinte ich "Anzeigen bzw. Verbergen" (Visible := not Visible).
Singelton ist, wenn Du nur ein Optionsmenü instanzieren kannst, pro Klasse.

Singleton war auch nur ein Vorschlag. Du kannst das Formular auch in einer Variable (private/protected Abschnitt des Aufrufenden Forms) zwischenspeichern. Wenn die Variable zu Anfang = nil ist, erstellst Du das Form, ansonsten musst ja nur "Visible" ändern...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.
Seite 2 von 2     12   

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