AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zahl grafisch anzeigen lassen

Ein Thema von lollypop · begonnen am 24. Jan 2014 · letzter Beitrag vom 25. Jan 2014
Antwort Antwort
lollypop

Registriert seit: 24. Jan 2014
1 Beiträge
 
#1

Zahl grafisch anzeigen lassen

  Alt 24. Jan 2014, 17:12
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?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Zahl grafisch anzeigen lassen

  Alt 24. Jan 2014, 17:29
Das kannst du ganz einfach mit einer for-Schleife machen. Wenn du danach sust, wirst du bestimmt fündig
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Zahl grafisch anzeigen lassen

  Alt 24. Jan 2014, 19:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Zahl grafisch anzeigen lassen

  Alt 24. Jan 2014, 20:36
Statt mit Controls zu jonglieren könntest Du auch ein Paintbox verwenden und diese in OnPaint die Quadrate zeichnen lassen, zu aktualisieren invalidate aufrufen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: Zahl grafisch anzeigen lassen

  Alt 25. Jan 2014, 00:15
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:
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;
Wann jetzt noch ein Invalidate notwendig wird wirst Du sicherlich rausfinden.

[EDIT]Wie unhöflich von mir[/EDIT] Willkommen in der DP

Gruß
Volker Zeller

Geändert von Volker Z. (25. Jan 2014 um 00:41 Uhr) Grund: Weil ich kann
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Zahl grafisch anzeigen lassen

  Alt 25. Jan 2014, 01:07
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.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#7

AW: Zahl grafisch anzeigen lassen

  Alt 25. Jan 2014, 09:01
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;
Angehängte Dateien
Dateityp: pdf Wingdings (TrueType).pdf (35,9 KB, 17x aufgerufen)

Geändert von hathor (25. Jan 2014 um 09:19 Uhr)
  Mit Zitat antworten Zitat
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#8

AW: Zahl grafisch anzeigen lassen

  Alt 25. Jan 2014, 14:09
Gibt es eigentlich die Möglichkeit mit Delphi oder einem nennen wir es Generator eigene
Schriftarten zu erstellen?

Mein eigenes:Memo1.Font.Name:= 'MeinDings';
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Zahl grafisch anzeigen lassen

  Alt 25. Jan 2014, 14:21
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 Memo1.Font.Name := 'MeinIrgendwas'; auch verwenden.

Geändert von nuclearping (25. Jan 2014 um 14:24 Uhr)
  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 09:31 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