AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi (erledigt) dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?
Thema durchsuchen
Ansicht
Themen-Optionen

(erledigt) dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

Ein Thema von KodeZwerg · begonnen am 28. Sep 2022 · letzter Beitrag vom 28. Sep 2022
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

(erledigt) dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

  Alt 28. Sep 2022, 18:51
Delphi 11.2

Ich erstelle eine TrackBar so: (FTrackBarA ist in der Form als Variable abgelegt und FFormA ist eine generierte TForm auf der es draufliegt.)
Delphi-Quellcode:
     FTrackBarA := TTrackBar.Create(FFormA);
      try
        FTrackBarA.Parent := FFormA;
        FTrackBarA.Align := alBottom;
        FTrackBarA.Min := 15;
        FTrackBarA.Max := 255;
        FTrackBarA.Position := 255;
        FTrackBarA.Frequency := 25;
        FTrackBarA.OnChange := TrackBarAChange;
      finally
      end;
und reagiere beim OnChange so:
Delphi-Quellcode:
procedure TfrmMain.TrackBarAChange(Sender: TObject);
begin
  FFormA.AlphaBlendValue := (Sender As TTrackBar).Position
end;
Aber obwohl ich ein unteres Limit angebe, pfeift die Vcl drauf und lässt es bis 0 runtergehen.

Warum ist das so bzw wie geht es korrekt, bitte um Hilfe
Gruß vom KodeZwerg

Geändert von KodeZwerg (28. Sep 2022 um 21:21 Uhr)
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

  Alt 28. Sep 2022, 19:04
hallo

würde zuerst max setzen und dann min. Max ist von Haus aus 10 und min kann nicht größer sein als max und wird wieder auf 0 gesetzt?

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

  Alt 28. Sep 2022, 19:06
Weil Min nicht gesetzt wird, und das auch noch ohne Fehlermeldung/Exception.

Probiere es selbst aus.
TrackBar auf die Form und Min die 15 zuweisen.

Min ist größer als das "aktuelle" Max und wird daher verworfen (alternativ hätte der Hersteller dabei aber auch einfach Max hochsetzen können)


Lösung: zuerst Max zuweisen

oder wenn Max kleiner als aktuelles Min, dann zuerst Min


Delphi-Quellcode:
if NewMin > FTrackBarA.Max then begin
  FTrackBarA.Max := NewMax;
  FTrackBarA.Min := NewMin;
end else begin
  FTrackBarA.Min := NewMin;
  FTrackBarA.Max := NewMax;
end;

// oder

FTrackBarA.Min := Min(NewMin, NewMax);
FTrackBarA.Max := Max(NewMin, NewMax);
FTrackBarA.Min := NewMin;
FTrackBarA.Max := NewMax;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

  Alt 28. Sep 2022, 19:08
[ADD]
https://quality.embarcadero.com/browse/RSP-39564
[/ADD]


@Keldorn, zum Glück nicht auf 0 ... es wird einfach ignorert/verworfen und der alte Wert bleibt ... wäre auch blöd, denn wäre MAX kleiner 0 würde es dann ja auch knallen


Delphi-Quellcode:
procedure TTrackBar.SetMin(Value: Integer);
begin
  if Value <= FMax then
    SetParams(FPosition, Value, FMax);
end;

procedure TTrackBar.SetMax(Value: Integer);
begin
  if Value >= FMin then
    SetParams(FPosition, FMin, Value);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Sep 2022 um 19:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: dynamisch erstellte TrackBar hält nicht das "Min" ein, warum?

  Alt 28. Sep 2022, 21:20
Vielen Dank für die Erklärungen! Ja so wie ihr es beschreibt klingt es logisch aber ich bin da nicht drauf gekommen, hätte ja mal ne MessageBox setzen können oder debuggen aber ne, ich probierte ewig nur in dem event was zu drehen, logischerweise ohne Erfolg.
Einen Hinweis hätte ich mir an dieser Stelle schon gewünscht das ich außerhalb des gültigen Bereichs was versuche.

Nu klappts und es schnurrt, lieben dank euch beiden!!
Gruß vom KodeZwerg
  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 05:29 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