AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

Ein Thema von juergen · begonnen am 10. Aug 2013 · letzter Beitrag vom 11. Aug 2013
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.165 Beiträge
 
Delphi 11 Alexandria
 
#1

Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 10. Aug 2013, 12:40
Hallo zusammen,

momentan nutze ich eine Combobox mit der Auswahl einer entsprechenden Bewertung als reine Textauswahl (1 - 5 Sterne, in 0,5er Schritten).
Benutzerfreundlich ist das nicht, bzw. sieht eine Bewertung über grafische "Sterne" einfach besser aus.
Nun dachte ich es gibt schon etwas fertiges. In meiner TMS Sammlung habe ich auch eine Trackbar gefunden, die sieht aber nicht "schön" aus.

Kennt jemand etwas "fertiges"? Oder sollte ich mir über eine ImageList jeweils 10 gelbe und 10 weiße Sterne-Icons verwalten. Und je nachdem wo der Anwender in z.B. einem Panel dann hin klickt, ermittle ich die Mausposition und setze im Wechsel das passende Icon aus der ImageList...???

Vielen Dank vorab schon mal für Tipps und Vorschläge!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (10. Aug 2013 um 13:06 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 10. Aug 2013, 13:33
Da das sehr einfach umzusetzen ist, würde ich es mal eben selbst bauen. Du kannst auch einfach einen weißen und einen roten Stern als Bitmap nehmen und die dann hintereinander zeichnen.

Vielleicht verwendest Du einfach eine TPaintbox und überschreibst sowohl die Click- als auch die Paint-Methode. Die OnClick-Methode nimmt Maus-X, relativ zur Paintbox und teilt sie durch 5. das ist die Anzahl der Sterne (+1), die die Paint-Methode dann zeichnen muss.

Eine Form, eine Paintbox und eine Imagelist mit zwei Bitmaps: Weißer und gelber Stern.

Delphi-Quellcode:
Procedure TForm14.PaintBoxClick(Sender: TObject);
Var
  p: TPoint;
  pb: TPaintBox;

Begin
  pb := Sender As TPaintBox;
  p := pb.ScreenToClient(Mouse.CursorPos);
  pb.tag := p.x Div (pb.Width Div 5);
  pb.Invalidate;
End;

Procedure TForm14.PaintBoxPaint(Sender: TObject);
Var
  stars: Integer;
  canvas: TCanvas;
  bounds: TRect;
  I, wd: Integer;

  Procedure _PaintStar(PaintClickedStar: Boolean; x: Integer);
  Var
    imageIndex: Integer;

  Begin
    If PaintClickedStar Then
      imageIndex := 1
    Else imageIndex := 0;

    ImageList.Draw(canvas, x + 2, 2, imageIndex, dsTransparent, itImage);
  End;
Begin

  canvas := (Sender As TPaintBox).Canvas;
  stars := (Sender As TPaintBox).Tag;
  bounds := (Sender As TPaintBox).BoundsRect;
  OffsetRect(bounds, -bounds.left, -bounds.top);
  canvas.Brush.Color := clWhite;
  canvas.Rectangle(bounds);
  wd := bounds.Right Div 5;
  For I := 0 To 4 Do
    _PaintStar(i <= stars, i * wd);
End;
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.165 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 10. Aug 2013, 13:58
Hallo Furtbichler,

oh, vielen Dank für deine Mühe und es funktioniert auf Anhieb!
Dein Ansatz ist etwas anders wie ich es gemacht hätte.
Bis jetzt hatte ich noch nie mit einer Paintbox gearbeitet...
Was ich jetzt auf die Schnelle nicht gefunden habe:
Wie bekomme ich den Rahmen von der Paintbox weg?
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 10. Aug 2013, 14:01
Die Paintbox dient nur als 'proof-of-concept' Du kannst Dir eine eigene Komponente von TControl ableiten, glaube ich. Oder Du machst das als TImage lädst eine statische Bitmap mit der entsprechenden Größe (24x120 für 5 24x24 Sterne) und zeichnest in den Canvas der Bitmap.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 10. Aug 2013, 21:27
Denk auch dran, dass es im Unicode Zeichensatz teilweise recht hübsche Zeichen gibt.
✮✮✮✮⭐⭐⭐
✹✹✹✹
▶▶▶▶▷
◖◗
★★★★☆
☻☻☻☻☻☺
⚫⚫⚫⚫⚪
⬛⬛⬛⬛⬜

Das vergisst man manchmal obwohl man damit einfacher zum Ziel kommt.
fork me on Github
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Ranking Komponente gesucht, bzw. wie kann man sowas umsetzen?

  Alt 11. Aug 2013, 06:00
Da muss man aber aufpassen, dass man auch eine Schrift hat, die die Zeichen enthält. Bei mir werden z.B. bei deinen Beispielen in den ersten und letzten zwei Zeilen nur Kästchen angezeigt...
  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 21:52 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