AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid komplett selbst steuern

Ein Thema von Coder1990 · begonnen am 16. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#1

StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 14:57
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:
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;
3. Warum werden die Cells bei dieser Procedure nicht ausgemalt, obwohl der text gezeichnet wird?: (gelöst)
Delphi-Quellcode:
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;
4. Wie kann ich Mausklicks auf das StringGrid abfangen ohne dass das TStringGrid darauf selbsttändig reagieren kann?
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 17:13
Zitat von Coder1990:
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.
Hallo,

zu 6: Den Quelltext einer Komponente brauchst du nicht, wenn du sie ableiten möchtest.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#3

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 18:27
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 20:02
Dann gebe so was ein : StringGrid1. Der Punkt dürfte das gesuchte liefern. Aber richtig eingeben.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#5

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 20:13
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 20:41
Zitat von Coder1990:
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 -.-)
...
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
Warum heißt das wohl "private" ? Warum heißt es ableiten, überschreiben etc. und nicht "modifizieren" ? Das ist OOP und da benutzt man Vererbung, inherited etc. Und das private ist genau dazu da, das eben nicht durchgängig möglich zu machen.

gut, zu 3. noch : wo ist denn das FillRect ? 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.

P.S.: du tust dir selber keinen Gefallen damit, 5 Fragen in eine zu packen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#7

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 20:55
Zitat von Hansa:
Zitat von Coder1990:
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 -.-)
...
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
Warum heißt das wohl "private" ? Warum heißt es ableiten, überschreiben etc. und nicht "modifizieren" ? Das ist OOP und da benutzt man Vererbung, inherited etc. Und das private ist genau dazu da, das eben nicht durchgängig möglich zu machen.
oben wurde gesagt ich soll mit stringgrid1. durchgucken soll - da werden mir nunmal nur die in public deklarierten angezeigt
(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 von Hansa:
gut, zu 3. noch : wo ist denn das FillRect ? 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.
punkt 3 ist schon gelöst hab doch ein "// hat das prob gelöst" drangemacht

Zitat von Hansa:
P.S.: du tust dir selber keinen Gefallen damit, 5 Fragen in eine zu packen.
hmm sind halt alle zum thema stringgrid und ich hab mir halt gedacht da kommt so ein ub3r 1337 pr0 der mir alle löst

mach ich nächstes mal halt 6 threads auf xD (achtung ironie^^)

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#8

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 21:06
Das Problem das du hast ist folgendes.
Wenn eine Methode beim Stringgrid nicht als virtual markiert ist kannst du es auch nicht überschreiben...
Fabian E.
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#9

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 21:19
sowas in der art hab ich mir auch schon gedacht ...
hat jemand ne idee, wie ich das machen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#10

Re: StringGrid komplett selbst steuern

  Alt 16. Jul 2008, 21:58
evtl ein anderes Freewaregrid benutzen, da kannst du dann auch am Code rumbasteln. Guck doch einfach mal auf Torry.
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:13 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