![]() |
Zahl grafisch anzeigen lassen
Hallo liebe Community,
Ich versuche mal meine Situation zu erklären: Ich habe eine Listbox, in die verschiedene Zahlen hinzugefügt werden. die Summe der Zahlen wird berechnet (Habe den Wert "summe" genannt, Typ integer). Soweit so gut. Jetzt soll dem Benutzer diese Summe grafisch angezeigt werden. Als kleine farbige Quadrate/Blöcke die unterhalb der List box platziert werden. Sind in der Listbox folgende zahlen: 2, 3, 4, 5... dann ist die Summe 14, es sollen unter der Listbox dann 14 Quadrate erscheinen. bei 0 zahlen keine Quadrate, bei 14 eben 14 Quadrate, bei 19 sollen es 19 sein... die Summe ändert sich ständig. Für jede Zahl müsste ein Objekt erstellt werden, aber ich komme einfach nicht darauf, wie es gehen könnte. Vielleicht habt ihr eine Idee? |
AW: Zahl grafisch anzeigen lassen
Das kannst du ganz einfach mit einer for-Schleife machen. Wenn du danach sust, wirst du bestimmt fündig :)
|
AW: Zahl grafisch anzeigen lassen
Delphi-Quellcode:
const
SHAPE_WIDTH = 10; SHAPE_HEIGHT = 10; var Quadrate, i, l, t: Integer; Shape: TShape; // uses ExtCtrls begin // Quadrate werden in ein Panel namens Panel1 gezeichnet Panel1.DoubleBuffered := TRUE; Quadrate := 5; l := 0; t := 0; for i := 0 to Quadrate - 1 do begin Shape := TShape.Create(Panel1); with Shape do begin Parent := Panel1; Left := l; Top := t; Width := SHAPE_WIDTH; Height := SHAPE_HEIGHT; Color := clSkyBlue; end; Inc(l, SHAPE_WIDTH); if (l > Panel1.ClientWidth) then begin l := 0; Inc(t, SHAPE_HEIGHT); end; end; end; |
AW: Zahl grafisch anzeigen lassen
Statt mit Controls zu jonglieren könntest Du auch ein Paintbox verwenden und diese in OnPaint die Quadrate zeichnen lassen, zu aktualisieren invalidate aufrufen.
|
AW: Zahl grafisch anzeigen lassen
Hallo,
ich würde eher Bummis Ansatz wählen: Denn den Spass mit Controls (TShape) zu erledigen heißt ja auch diese wieder los zu werden (im Eingangspost steht da was von: "die Summe ändert sich ständig."); das ist zwar eigentlich auch kein Problem, aber lästiger Mehraufwand. Man könnte also den Code von nuclearping (leicht geändert: Es kommt besser, wenn die Quadrate nicht abgeschnitten werden) und den Ansatz von Bummi vereinen zu:
Delphi-Quellcode:
Wann jetzt noch ein Invalidate notwendig wird wirst Du sicherlich rausfinden.
const
SQUARE_SIDE = 20; procedure TForm1.PaintBox1Paint(Sender: TObject); var i, l, t : Integer; begin PaintBox1.Canvas.Brush.Color := clSkyBlue; l := 0; t := 0; for i := 1 to FSum do begin PaintBox1.Canvas.FillRect (Rect (l, t, l + SQUARE_SIDE, t + SQUARE_SIDE)); Inc (l, SQUARE_SIDE + 2); if PaintBox1.Width < l + SQUARE_SIDE then begin l := 0; Inc (t, SQUARE_SIDE + 2) end end end; [EDIT]Wie unhöflich von mir[/EDIT] Willkommen in der DP Gruß |
AW: Zahl grafisch anzeigen lassen
Ja, stimmt. Die Quadrate in eine TPaintBox zu zeichnen ist natürlich die simplere Variante. Keine Ahnung, warum ich als erstes auf TShape gekommen bin. :wall: :mrgreen:
|
AW: Zahl grafisch anzeigen lassen
Liste der Anhänge anzeigen (Anzahl: 1)
Schriftname: WINGDINGS
Ist in jedem WINDOWS.
Delphi-Quellcode:
procedure TForm1.Button23Click(Sender: TObject);
begin Memo1.Font.Name:= 'WingDings'; Memo1.Font.Size:=24; Memo1.lines.add('xnm'); Memo1.lines.add('qwertzuiopü+'); Memo1.lines.add('asdfghjklöä#'); Memo1.lines.add('1234567890ß'); end; |
AW: Zahl grafisch anzeigen lassen
Gibt es eigentlich die Möglichkeit mit Delphi oder einem nennen wir es Generator eigene
Schriftarten zu erstellen? Mein eigenes:
Delphi-Quellcode:
Memo1.Font.Name:= 'MeinDings';
|
AW: Zahl grafisch anzeigen lassen
Das hat mit Delphi nichts zu tun. Du brauchst ein Tool, womit du TTF (True Type Font) Dateien erstellen und dann (zB) in deinem Windows installieren kannst. Dann kannst du sie mit
Delphi-Quellcode:
auch verwenden.
Memo1.Font.Name := 'MeinIrgendwas';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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