![]() |
StringGrid komplett selbst steuern
Seas,
ich arbeite gerade an einem ID3Tag-Modifizier Programm und lasse mir Titel,Artist,Album (usw.) in ein TStringGrid eintragen. Zur Umsetzung einiger Funktionen muss man im StringGrid die Zellen markieren können wie man will.. Was will ich damit sagen? - Man soll z.b. in Col[0] Row[1],Row[3] und Row[5] markiert haben können, während in Col[4] wiederum andere Rows markiert sind Und da ein TStringGrid nur Rechteckige Markierungsbereiche zulässt hab ich mich entschlossen nun das markieren selbst vorzunehmen. Folgende Fragen haben sich dazu ergeben: 1. Wie kann ich den grauen Kasten entfernen den man automatisch als Markierung mitschleppt 2. Wie kann das Scrollen selbststeuern? (Scrollby verschmiert nur das Canvas und mit Refresh lande ich irgendwie wieder oben) Mein Ansatz für 2:
Delphi-Quellcode:
3. Warum werden die Cells bei dieser Procedure nicht ausgemalt, obwohl der text gezeichnet wird?: (gelöst)
procedure TFMain.SGMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean); begin Handled:=true; Draw.Enabled:=true; // Dieser Timer zeichnet die Markierung (kommt später noch) SG.ScrollBy(0,-10); {SG.refresh} end;
Delphi-Quellcode:
4. Wie kann ich Mausklicks auf das StringGrid abfangen ohne dass das TStringGrid darauf selbsttändig reagieren kann?
procedure TFMain.DrawTimer(Sender: TObject); // Das hier ist der Timer der die Markierung zeichnet
var i,k:integer; r:trect; b:string; begin SG.Refresh; Draw.Enabled:=false; SG.Brush.Color:=clHighlight; for i:=0 to 5 do for k:=1 to SG.RowCount-1 do if SG_Sel[i,k] then begin r:=SG.CellRect(i,k); b:=SG.Cells[i,k]; {SG.canvas.FillRect(r);} // <- dieser befehl war vorher (ging nicht) SG.Canvas.Rectangle(r); // <- hat das prob gelöst - also geht nun DrawText(SG.Canvas.Handle,PChar(b), length(b), r,DT_Center or DT_WordBreak); end; end; 5. Hat jemand effizientere Vorschläge für die oben geposten Delphi Codes? MfG //edit: 6. Kann mir vll jemand die Grids.pas geben, weil ich hab Delphi 2005 und finde die im ordner nicht^^. Möglicherweiße könnte ich nähmlich einfach das Tstringgrid ableiten und die click bzw. select proceduren mit "begin end" overriden. |
Re: StringGrid komplett selbst steuern
Zitat:
zu 6: Den Quelltext einer Komponente brauchst du nicht, wenn du sie ableiten möchtest. |
Re: StringGrid komplett selbst steuern
ich habe nie geschrieben, dass ich die unit zum ableiten benötigen würde ;)
ich wollte bloß die privaten procedures bzw. funktionen erfahren (deren namen) damit ich diese auch overriden kann :D |
Re: StringGrid komplett selbst steuern
Dann gebe so was ein : StringGrid1. Der Punkt dürfte das gesuchte liefern. Aber richtig eingeben. :mrgreen:
|
Re: StringGrid komplett selbst steuern
also irgendwie zeigt der bei mir beim "." setzen nur die in PUBLIC eingetragenen functions, procedures usw.
aber wie ich vll schon gesagt habe will ich die PRIVATE procedures modifizieren (schätze mal nicht dass die internen funktionen zum "graue box" erstellen oder so public sind -.-) // btw könnte sich jemand auch mal die anderen fragen anschauen :zwinker: |
Re: StringGrid komplett selbst steuern
Zitat:
gut, zu 3. noch : wo ist denn das FillRect ? :zwinker: Ich sehe da nur, dass ein Text mit Drawtext angezeigt werden soll und die Zelle ansonsten so bleibt wie sie ist. Das ist zumindest kein Delphi-Bug. :mrgreen: P.S.: du tust dir selber keinen Gefallen damit, 5 Fragen in eine zu packen. |
Re: StringGrid komplett selbst steuern
Zitat:
(oder habt ihr gemeint dass ich in meiner neuen unit mit der ableitung irgendwie durchgucken soll? -> wenn ja weiß ich nicht genau wo ich dies tun soll damit ich privates angezeigt krieg). Versteht denn keiner was ich meine? Zitat:
Zitat:
mach ich nächstes mal halt 6 threads auf xD (achtung ironie^^) MfG |
Re: StringGrid komplett selbst steuern
Das Problem das du hast ist folgendes.
Wenn eine Methode beim Stringgrid nicht als
Delphi-Quellcode:
markiert ist kannst du es auch nicht überschreiben...
virtual
|
Re: StringGrid komplett selbst steuern
sowas in der art hab ich mir auch schon gedacht ...
hat jemand ne idee, wie ich das machen kann? |
Re: StringGrid komplett selbst steuern
evtl ein anderes Freewaregrid benutzen, da kannst du dann auch am Code rumbasteln. Guck doch einfach mal auf
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 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