Hallo!
Ich bin grade an meinem "Wer wird Millionär"-Publikumsjoker. Es sollen die vier Balken auf den Images 'img_Proz1' 'img_Proz2' 'img_Proz3' und 'img_Proz4' mit der Höhe proportianal zur Prozentzahl angezeigt werden, doch seltsamerweise funktioniert das nicht:
Delphi-Quellcode:
procedure TForm1.img_Joker_PClick(Sender: TObject);
var
Prozente: TProzente;
i,j,Pixel:integer;
begin
Publikum(Stufe,Antwort,Prozente);
for i := 1 to 4 do
begin
Pixel := trunc(Prozente[i] * 1.44);
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Top := 184 - Pixel;
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Height := Pixel;
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Canvas.Pen.Color := $000000;
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Canvas.FillRect(ClientRect);
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Canvas.Pen.Color := $FF0000;
for j := 0 to Pixel do
begin
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Canvas.MoveTo(0,j);
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Canvas.LineTo(27,j);
end;
TImage(Form1.FindComponent('img_Proz'+inttostr(i))).Repaint;
end;
pnl_Publikum.Visible := true;
end;
Die Funktion Publikum() gibt in dem Array[1..4] of Integer namens Prozente die 4 Prozentzahlen zurück, das konnte ich auch verifizieren. Der Wert von Pixel gibt die Höhe der Säule an, die gerade bearbeitet wird und dieser Wert ist immer korrekt, das habe ich überprüft. Ich habe absolut keine Ahnung wo der Fehler noch stecken könnte...
Wenn man den Joker das allererste Mal nach dem Programmstart benutzt funktioniert er korrekt, doch danach sind die Balken auf dem Bildschirm jedesmal verschoben, nur 1 Pixel hoch (und verschoben) oder gar nicht vorhanden, obwohl sie vorhanden sein müssten!
Es wäre nett, wenn ihr euch das mal anschauen könntet, vielleicht sehe ich ja den Wald vor lauter Bäumen nicht... Vielen Dank schonmal!
MfG Leif