Autor Beitrag
morfus
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 10.01.07 17:07 
Hallo.

Ich habe bei meinem aktuellen Projekt eine Gauge, die per MouseMove eingestellt wird.
Jenach Position ist der Progress. Der Progress wird umgerechnet ins Uhrzeitformat, allerdings linear.
Ich würde gern im ersten drittel die erste Stunden einstellen können und im zweiten Drittel weitere 5 Stunden. Einfach weils besser für den User ist. (die gauge ist nur 250 Pixel)

Aber nach einem Umschalten auf ein 24 Stunden Format muss das auch wieder aufgehoben werden können.

Ich hab da Probleme und ich hoffe ihr könnt mir da helfen

Danke
__
Benjamin


Zuletzt bearbeitet von morfus am Mi 10.01.07 18:02, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19325
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 10.01.07 17:12 
Erstmal :welcome: hier im Forum!

Du solltest den Titel ändern, da er nicht viel über das Thema verrät! "zeiteinstellungen" sagt nicht viel aus.

Hier übrigens der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:
Richtlinien:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf user defined image klicken und den Titel ändern.

Danke!

Zu deinem Problem:
Was hast du denn bis jetzt für Code? Ich meine, wir wissen ja gar nicht, wie du das bis jetzt gemacht hast.
Denn dein Code muss ja nur etwas verändert werden...
morfus
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 10.01.07 18:36 
Danke, dass du dich meinem Problem annimmst ;)

multi ist der Faktor der Gauge.Progress / Gauge.width
über der Gauge ist ein Panel gelegt, wegen dem MouseMove:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var multi:real;
begin

  if (SystemOne = true) then
  begin
    Gauge1.MaxValue := 360;
  end else
  begin
    Gauge1.MaxValue := 1439
  end;

  multi := Gauge1.MaxValue / 250;

  if (X >= 250then
  begin
    X := 250;
  end;
  if (X <= 1then
  begin
    X := 0;
  end;

  Gauge1.Progress := Trunc(X * multi);

// ...hier wird noch die Uhrzeitanzeige eingestellt...

end;


hoffe, dass das soweit klar ist, was ich mit dem code anstellen wollte.
OldGrumpy
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 82



BeitragVerfasst: Mi 10.01.07 19:52 
Wie wäre es denn, den Gauge gar nicht zu skalieren sondern von vornherein mit hoher Auflösung zu benutzen und dann einfach den Resultatwert entsprechend zu skalieren? Das wäre meiner Meinung nach wesentlich logischer und im Code dann auch besser zu verstehen wenn man sich den irgendwann noch einmal anschaut.

Ich bin mir nicht sicher ob ich Deine Beschreibung richtig verstanden habe, ich versuch mal zusammenzufassen wie sich das mir momentan darstellt.

Du hast einen Gauge der meinetwegen zehn Abschnitte hat. Nur mal zur Vereinfachung. Auf den ersten fünf soll ein Abschnitt je 10 Minuten sein, auf den restlichen fünf je eine Stunde. Damit sähe das dann so aus:

(Gauge-Wert, entsprechender Zeitwert)

1, 10 Min.
2, 20 Min.
3, 30 Min.
4, 40 Min.
5, 50 Min.
6, 1 Std.
7, 2 Std.
8, 3 Std.
9, 4 Std.
10, 5 Std.

Hab ich das soweit richtig verstanden?

Falls das der Fall ist, dann siehe Vorschlag oben :)

Dann lässt sich die Zeitberechnung mit einem einfachen if-then-else erschlagen und man muss nicht dauernd am Gauge selber rumspielen...
morfus
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 10.01.07 20:54 
Nein, leider nicht...

Also abschnitte ist ein wenig falsch.

Mit der Maus würde ich gern einfach über die gauge fahren und minutengenau einstellen.

Da ich bei 6 stunden und nur 250 px Breite das nicht genau einstellen kann ist klar.
Das sind ja auch 360 minuten. (ich bräuchte also mindestens 360 px)
Schwierig wirds beim umstellen auf 24 Std. (1439 Minuten)

Daher wollte ich (nur im 6 Std Modus) die erste Stunde minutengenau angeben können.
Und der Rest kann dann ein wenig ungenauer sein, einfach weil man den nicht so oft nutzt.

Der Code muss die erste Stunde auch nicht in einen Abschnitt packen.
Es würde reichen wenn man es irgendwie schaffen würde, dass mit zunehmendem X-Wert (von TPoint)
auch die Minuten gröber umgerechnet werden.


Ich hoffe, dass meine Situation jetzt klar ist. :lol:

Danke
OldGrumpy
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 82



BeitragVerfasst: Mi 10.01.07 21:12 
Ich kann Dir da nicht ganz folgen, kannste mal ne Skizze machen? Du beschreibst nix anderes als ich, nur dass ich der Übersichtlichkeit halber zehn Abschnitte (von denen z.B. jeder einen Pixel breit sein könnte, also um bei deiner Breite zu bleiben dann halt 250 Abschnitte) benutzt hab. Mein Tipp ist immer noch der gleiche... Stell nicht die Gauge um sondern rechne den eingestellten Wert um.