![]() |
Pfeil-Up oder Down in Text
Hi,
ich möchte in einem StringGrid durch Click auf die Headerrow sortieren. Dabei soll neben dem Cell-Inhalt ein Pfil Rauf bzw runter erscheinen. Wie bekomme ich diese Zeichen in den Text? Danke und Bitte um entschuldigung, falls diese Frage schon ein paar 100 male gestellt wurde mfg |
Re: Pfeil-Up oder Down in Text
Moin, Moin.
Typischerweise fügt man die nicht in den Text ein, sondern zeichnet im OnDrawCell() ein kleines Dreieck hinter den Text. PS : Ein herzliches Willkommen in der DP! |
Re: Pfeil-Up oder Down in Text
Danke schön! Und Danke für die Begrüßung.
Noch eine Frage: Wie mache ich die Dreiecke (ASCII - ANSI??) mfg |
Re: Pfeil-Up oder Down in Text
Wir reden wohl noch ein wenig aneinander vorbei.
Wenn ich schreibe ".. zeichnet im OnDrawCell() ..", dann meine ich tatsächlich zeichnen, d.h. man ermittelt mit Canvas.TextWidth() die Länge des Textes in Pixeln und zeichnet (sofern die Spaltenbreite es zulässt) z.B. mit PolyLine() ein kleines Dreieck mit Schatteneffekt. |
Re: Pfeil-Up oder Down in Text
Danke! hab schon gehofft, es gäbe eine ganz ganz einfache methode
mfg neutrino |
Re: Pfeil-Up oder Down in Text
Das muss ja nicht unbedingt mittels einer "manuellen" Methode wie PolyLine() geschehen. Meiner Meinung nach ist es am einfachsten den Pfeil als fertige Grafik mit Canvas.Draw() an die richtige Stelle zu zeichnen. Die Grafik kannst du beispielsweise aus einer ImageList herausholen.
|
Re: Pfeil-Up oder Down in Text
Hallo Ralf - mit f.
Das ist natürlich richtig, aber das Polyline() ist eigentlich nicht der besondere Aufwand. Normalerweise sortiert man ja mit Klick auf die oberste Zeile, da gilt es dann noch einiges mehr zu beachten. Außerdem, ich hatte es angedeutet, wenn die Spaltenbreite verändert wird, muss ggf. das Dreieck entfernt oder neu gezeichnet werden... |
Re: Pfeil-Up oder Down in Text
Hallo Ralph - mit ph. :)
Das ist schon richtig. Aber ich erstelle mir für solche Situationen meistens eine Methode der ich z.B. nur einen ImageIndex einer ImageList übergeben muss um das korrekte Symbol zu zeichnen. Auf diese Weise kann man nicht nur "Pfeil-Dreiecke" sondern eigentlich jedes beliebige Symbol als Statusanzeige im Spaltenkopf zeichnen. So eine Routine, inklusive des Tests auf eine bestimmte Breite ist doch höchstens 10-15 Zeilen lang (je nach Formatierung) Für "grössere" Programme verwende ich dann sowieso ein erweitertes Grid, wie z.B. TAdvStringGrid von TMS. Da sind solche Sachen, meistens ebenfalls mit ImageListen bereits fertig gekapselt. Allerdings lohnt sich für ein kleines Tool meistens ein solch "Riesen-Control" nicht, zumindest nicht wenn man nur eine Statusanzeige in den Header zeichnen will. Ich wollte ja auch nicht sagen, dass deine Methode mit PolyLine() falsch sei, sie ist einfach nur anders. Viele Wege führen eben nach Rom zum Sortierpfeil. |
Re: Pfeil-Up oder Down in Text
Hallo Ralf - mit f,
so hatte ich dich auch verstanden. Zitat:
:hi: |
Re: Pfeil-Up oder Down in Text
Falls Image (= Datei), dann kann es sein, dass kein Pfeil da ist. => Fehlerquelle (vergessene Datei) um 3 Zeilen einzusparen.
Delphi-Quellcode:
with StringGrid1 do begin
if not (ACol = SortColAusgew) then // wird im OnClick gesetzt. Canvas.Brush.Color := $00AB8552 else Canvas.Brush.Color := clLime; Canvas.Pen.Color := clBlack; Canvas.Polygon([Point(Rect.Right-9,Rect.Top+9-6-3), Point(Rect.Right-3,Rect.Top+15-6-3), Point(Rect.Right-15,Rect.Top+15-6-3)]); Canvas.Polygon([Point(Rect.Right-3,Rect.Top+9), Point(Rect.Right-15,Rect.Top+9), Point(Rect.Right-9,Rect.Top+15)]); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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 by Thomas Breitkreuz