![]() |
Re: Boolean ändert nicht seinen Wert (?)
15 37 in Deutschlan/Österreich/Schweiz:
Alle sind im DP forum ^^ Dank erstmal für die ganzen Antworten... Eigentlich dachte ich auch das der Code geht, deshalb habe ich mich auch gewundert, das er eben nicht geht. Ich poste hier mal die ganze pas!
Delphi-Quellcode:
* für mkinzler: Mir war klar das du wo meintest... :D Nur weiß ich nicht wie man den Bereich da oben beschreibt ^^
unit settings;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XiButton, XiTrackBar, ExtCtrls, JvExStdCtrls, JvWinampLabel, XiPanel; type TEQCArray = array [1..3] of Byte; type TfrmSettings = class(TForm) xiBg: TXiPanel; xiCaptionBar: TXiPanel; buttonCloseOver: TImage; buttonCloseOut: TImage; xiCancel: TXiButton; xiOk: TXiButton; sBottom: TShape; sLeft: TShape; sRight: TShape; XiPanel1: TXiPanel; xiFadeOutOnClose: TXiButton; xiCrossfade: TXiButton; lFadeTime: TLabel; Label2: TLabel; xiFadeTime: TXiTrackBar; Label1: TLabel; XiPanel2: TXiPanel; Label5: TLabel; XiButton3: TXiButton; XiButton4: TXiButton; XiPanel3: TXiPanel; Label3: TLabel; eqTb3: TXiTrackBar; eqTb2: TXiTrackBar; eqTb1: TXiTrackBar; xiSets: TXiPanel; xiSet0: TXiButton; xiSetsButton: TXiPanel; XiButton5: TXiButton; xiSet1: TXiButton; xiSet2: TXiButton; xiSet3: TXiButton; xiSet4: TXiButton; xiSet5: TXiButton; pos3: TLabel; pos1: TLabel; pos2: TLabel; procedure xiFadeTimeChange(Sender: TObject); procedure xiSetsButtonClick(Sender: TObject); procedure buttonCloseOutMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure buttonCloseOverClick(Sender: TObject); procedure xiFadeOutOnCloseClick(Sender: TObject); procedure xiCrossfadeClick(Sender: TObject); procedure xiCancelClick(Sender: TObject); procedure xiOkClick(Sender: TObject); procedure xiSet0Click(Sender: TObject); procedure eqTb1Change(Sender: TObject); procedure eqTb2Change(Sender: TObject); procedure eqTb3Change(Sender: TObject); procedure xiCaptionBarMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormShow(Sender: TObject); procedure xiCaptionBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private FadeOutOnClose, Crossfade, noAbort : Boolean; // @ mkinzler (siehe auch bitte @ *) EQSetNum : Integer; FadeTime : Extended; procedure SetEQControl(EQCArray : TEQCArray); public function Execute(eFadeOutOnClose, eCrossfade : Boolean; eEQSetNum : Integer; eFadeTime : Extended) : Boolean; function getFadeOutOnClose : Boolean; function getCrossfade : Boolean; function getEQSetNum : Integer; function getFadeTime : Extended; end; var frmSettings : TfrmSettings; implementation {$R *.dfm} procedure TfrmSettings.xiFadeTimeChange(Sender: TObject); begin lFadeTime.Caption := FloatToStr(xiFadeTime.Position / 10); FadeTime := xiFadeTime.Position * 100; end; procedure TfrmSettings.xiSetsButtonClick(Sender: TObject); begin if xiSetsButton.BevelOuter = bvRaised then xiSetsButton.BevelOuter := bvNone else xiSetsButton.BevelOuter := bvRaised; xiSets.Visible := xiSetsButton.BevelOuter = bvRaised; end; procedure TfrmSettings.buttonCloseOutMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin buttonCloseOut.Visible := False; buttonCloseOver.Visible := True; end; procedure TfrmSettings.buttonCloseOverClick(Sender: TObject); begin buttonCloseOut.Visible := True; buttonCloseOver.Visible := False; Close; end; function TfrmSettings.Execute(eFadeOutOnClose, eCrossfade : Boolean; eEQSetNum : Integer; eFadeTime : Extended) : Boolean; begin Crossfade := not eCrossfade; FadeOutOnClose := not eFadeOutOnClose; EQSetNum := eEQSetNum; FadeTime := eFadeTime; xiFadeOutOnCloseClick(xiFadeOutOnClose); xiCrossfadeClick(xiCrossfade); xiFadeTime.Position := Round(eFadeTime / 100); xiSet0Click(FindComponent('xiSet' + IntToStr(EQSetNum))); ShowModal; Result := noAbort; end; procedure TfrmSettings.xiFadeOutOnCloseClick(Sender: TObject); begin FadeOutOnClose := not FadeOutOnClose; if FadeOutOnClose then xiFadeOutOnClose.Caption := 'Deactivate fade out on close' else xiFadeOutOnClose.Caption := 'Activate fade out on close'; end; procedure TfrmSettings.xiCrossfadeClick(Sender: TObject); begin Crossfade := not Crossfade; if Crossfade then xiCrossfade.Caption := 'Deactivate automatic crossfade' else xiCrossfade.Caption := 'Activate automatic crossfade'; end; procedure TfrmSettings.xiOkClick(Sender: TObject); begin noAbort := true; end; procedure TfrmSettings.xiCancelClick(Sender: TObject); begin noAbort := false; end; procedure TfrmSettings.xiSet0Click(Sender: TObject); var EQCArray : TEQCArray; begin if Sender is TXiButton then begin EQSetNum := StrToInt(Copy((Sender as TXiButton).Name, 6, Length((Sender as TXiButton).Name))); case EQSetNum of 0 : begin EQCArray[1] := 15; EQCArray[2] := 15; EQCArray[3] := 15; SetEQControl(EQCArray); end; 2 : begin EQCArray[1] := 16; EQCArray[2] := 18; EQCArray[3] := 15; SetEQControl(EQCArray); end; 3 : begin EQCArray[1] := 16; EQCArray[2] := 14; EQCArray[3] := 18; SetEQControl(EQCArray); end; 4 : begin EQCArray[1] := 16; EQCArray[2] := 15; EQCArray[3] := 14; SetEQControl(EQCArray); end; 5 : begin EQCArray[1] := 16; EQCArray[2] := 14; EQCArray[3] := 16; SetEQControl(EQCArray); end; end; end; end; procedure TfrmSettings.SetEQControl(EQCArray : TEQCArray); begin eqTb1.Position := EQCArray[1]; eqTb2.Position := EQCArray[2]; eqTb3.Position := EQCArray[3]; end; function TfrmSettings.getFadeOutOnClose : Boolean; begin Result := FadeOutOnClose; end; function TfrmSettings.getCrossfade : Boolean; begin Result := Crossfade; end; function TfrmSettings.getEQSetNum : Integer; begin Result := EQSetNum; end; function TfrmSettings.getFadeTime : Extended; begin Result := FadeTime; end; procedure TfrmSettings.eqTb1Change(Sender: TObject); begin pos1.Caption := IntToStr(30 - eqTb1.Position); end; procedure TfrmSettings.eqTb2Change(Sender: TObject); begin pos2.Caption := IntToStr(30 - eqTb2.Position); end; procedure TfrmSettings.eqTb3Change(Sender: TObject); begin pos3.Caption := IntToStr(30 - eqTb3.Position); end; procedure TfrmSettings.xiCaptionBarMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin buttonCloseOut.Visible := True; buttonCloseOver.Visible := False; end; procedure TfrmSettings.FormShow(Sender: TObject); var hDesk : HWND; hdcDesktop : HDC; p : TPoint; crefPixel : COLORREF; begin p.X := 9; p.Y := 40; hDesk := GetDesktopWindow; hdcDesktop := GetWindowDC(hDesk); crefPixel := GetPixel(hdcDesktop, p.x, p.y); eqTb1.BackColor := crefPixel; eqTb2.BackColor := crefPixel; eqTb3.BackColor := crefPixel; end; procedure TfrmSettings.xiCaptionBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Perform(wm_syscommand,$f012, 0); end; end. |
Re: Boolean ändert nicht seinen Wert (?)
Zitat:
|
Re: Boolean ändert nicht seinen Wert (?)
Moin Fabian,
wenn ich das richtig sehe handelt es sich nicht um einen TButton, sondern TxiButton. Der muss sich jetzt aber nicht zwingend so verhalten wie ein TButton. |
Re: Boolean ändert nicht seinen Wert (?)
Zitat:
|
Re: Boolean ändert nicht seinen Wert (?)
@xzise: ei doch so gut und häng Deinen Code samt zugehöriger dfm an Deinen Beitrag an.
Sowas läst sich in der IDE doch wesentlich besser durchgucken, als im Browser. Gruß onlinekater |
Re: Boolean ändert nicht seinen Wert (?)
Ich denk mal fogendes. Der Grund ist recht einfach:
FadeOutOnClose ist am Anfang mit False initialisiert (Standard für Boolean-Felder). Der Button hat am Anfang den Text Deactivate fade out on close (Im OI gesetzt). Jetzt klickst Du den Button und FadeOutOnClose wird auf True gesetzt. Und jetzt wird der Text wieder auf Deactivate fade out on close gesetzt. Beim zweiten Klicken wird FadeOutOnClose wieder auf False gesetzt und jetzt ändert sich erstmalig der Text. ...:cat:... |
Re: Boolean ändert nicht seinen Wert (?)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Nehmen wir mal an das es so ist:
So meinst du das oder? Aber so ist es (leider) nicht:
@ Anhang: TXiComponenten werden benötigt! |
Re: Boolean ändert nicht seinen Wert (?)
Zitat:
Und um so etwas zu vermeiden Initialisiert man solche globalen Werte gleich. Das geht zB. im Create (zB.: TFormX.FormCreate(...). Wenn man es Einfacher haben will kann man auch die Tags der Komponenten missbrauchen.
Delphi-Quellcode:
Die Tags sind mit 0 (Null) voreingestellt.
procedure TForm1.Button1Click(Sender: TObject);
begin // - alles was grösser oder keiner als Null ist ist wahr // - Null ist Unwahr Button1.Tag := not Integer( LongBool(Button1.Tag) ); Button1.Caption := inttostr(Button1.Tag); end; :stupid: |
Re: Boolean ändert nicht seinen Wert (?)
Habt ihr nicht gemerkt, dass es daran nicht gelegen haben kann ?
Man könnte es machen, aber da die Form eh über Execute aufgerufen wird, benötigt man es ja nicht im Create... [edit]In der Mainfrm:
Delphi-Quellcode:
[/edit]
procedure TfrmMain.xiSettingsClick(Sender: TObject);
begin with TfrmSettings.Create(self) do begin try if Execute(FadeOutOnClose, True, 0, FadeTime) then begin FadeTime := GetFadeTime; FadeOutOnClose := getfadeOutOnClose; Crossfade := getCrossfade; end; finally Free; end; end; end; |
Re: Boolean ändert nicht seinen Wert (?)
Wer garantiert dir das die Variable mit dem richtigem Wert initialisert wird ?
Wenn ich in die Delphihilfe gucke finde ich sowas: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 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