
Scrollbalken selbst machen
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ja !
Das sind solche zahlen z.b.
1,3542542525245 und daraus macht Round bei mir 13 und nicht 1 wie ich es erwartet hätte. ob das nun Falsch ist oder nicht weiß ich nicht. Aber aufjedenfall geht das so nicht. und bei div das gleiche:
Round(1.4444932939339). was kommt bei euch da raus ? bzw. was müsste da rauß kommen ? 1 oder nicht ? oder 2 ? aber nicht 14 oder ?
Das sind solche zahlen z.b.
1,3542542525245 und daraus macht Round bei mir 13 und nicht 1 wie ich es erwartet hätte. ob das nun Falsch ist oder nicht weiß ich nicht. Aber aufjedenfall geht das so nicht. und bei div das gleiche:
Round(1.4444932939339). was kommt bei euch da raus ? bzw. was müsste da rauß kommen ? 1 oder nicht ? oder 2 ? aber nicht 14 oder ?
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
ich sehe gerade Round(1.4444932939339) macht er richtig da kommt 1 rauß.... dann muss es wohl an der Variable oder so liegen. mal weiter suchen.
edit01
aber hier macht er wieder 123 oder so rauß und ohne round wird es 1,234 und soweiter !
edit01
Code: Alles auswählen
if ab > 0 then begin
t:=(ScrollBuffer.Height*100) / ab;
end;
Writeln(round(t));
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
wenn ich t einfach so Ausgabe mit Writeln bekmme ich eine z.b. so eine zahl: 1,333535355412
wenn ich jetzt aber Round(t) sage bekomme ich 133 oder so.... Aber mir geht es auch erher um den Scroll Balken als um die Funktion Round. Es muss mit dem Datentyp zusamen hängen. Anders kann ich es mir nicht erklären !
wenn ich jetzt aber Round(t) sage bekomme ich 133 oder so.... Aber mir geht es auch erher um den Scroll Balken als um die Funktion Round. Es muss mit dem Datentyp zusamen hängen. Anders kann ich es mir nicht erklären !
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ist bei mir aber auf jedenfall der fall. Warum weiß ich nicht. Aber darum geht es mir auch nicht ! mir geht es erher darum, wie ich das mit den Scrollen lösen könnte. Das mit der Prozen Rechnung ist mir schon klar, aber wie genau ?
ich könnte auch eine Schlüsselzahl Berechnung einsetzen:
Gewünschtemenge durch vorhanden Menge
und das ergbniss dann mit irgendwas mal nehmen, die frage ist halt jetzt wie !
ich könnte auch eine Schlüsselzahl Berechnung einsetzen:
Gewünschtemenge durch vorhanden Menge
und das ergbniss dann mit irgendwas mal nehmen, die frage ist halt jetzt wie !
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
var
t:Real;
begin
t:=4.5552546262;
Showmessage(IntToStr(round(t)));
writeln(t:10:10);
end;
Da kommt 5 raus und beim writeln 4,55...
warum beim round mit writeln 45 rauskommt kann ich dir nicht sagen ich hab mir jetzt die dokumentation zum writeln nicht angeschaut kann durchaus sein das das richtig ist. kann genauso gut sein das es ein fehler ist.
ABER ROUND ARBEITET KORREKT
t:Real;
begin
t:=4.5552546262;
Showmessage(IntToStr(round(t)));
writeln(t:10:10);
end;
Da kommt 5 raus und beim writeln 4,55...
warum beim round mit writeln 45 rauskommt kann ich dir nicht sagen ich hab mir jetzt die dokumentation zum writeln nicht angeschaut kann durchaus sein das das richtig ist. kann genauso gut sein das es ein fehler ist.
ABER ROUND ARBEITET KORREKT
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Um ehrlich zu sein verstehe ich dein Problem noch nicht.
Wenn L die Länge des Textes ist. Und B die Länge der Scrollbar und S die Länge des Scrollbalkens (oder wie das Ding heißt).
Warum nicht
Wenn L die Länge des Textes ist. Und B die Länge der Scrollbar und S die Länge des Scrollbalkens (oder wie das Ding heißt).
Warum nicht
Code: Alles auswählen
if L>B then S := B div L else if L>Maximallänge then S:=Minimallänge.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Wenn ich dich richtig verstehe wird die Scrollbalken Länge berechnet.
Die Scrollbalken Länge soll aber egal sein.
L > Scrollbuffer.heig
B > fVertikal.height
S > fVertikalScroll.height..
Also zum Problem:
Der Text(ScrollBuffer.heigh) kann größer sein als der Scrollbalken selbst.
D.h. ich kann nicht einfach das ScrollFenster auf die Scrollbalken Position setzten...
Bei jeder Mausbewegung muss das Sichtfenster um eine bestimmte menge an Pixeln verschoben werden entweder rauf oder runter.
Im Moment geht es mir um rauf.
Danke für deine Hilfe !
Die Scrollbalken Länge soll aber egal sein.
L > Scrollbuffer.heig
B > fVertikal.height
S > fVertikalScroll.height..
Also zum Problem:
Der Text(ScrollBuffer.heigh) kann größer sein als der Scrollbalken selbst.
D.h. ich kann nicht einfach das ScrollFenster auf die Scrollbalken Position setzten...
Bei jeder Mausbewegung muss das Sichtfenster um eine bestimmte menge an Pixeln verschoben werden entweder rauf oder runter.
Im Moment geht es mir um rauf.
Danke für deine Hilfe !
MFG
Michael Springwald
Michael Springwald