![]() |
Borland D7 > Stringgridkompo aendern
Tachchen Leutz,
ich hatte mal ne frage. die delphi vcl kompos sind doch mit delphi selbst erstellt worden. da das dähmliche grid immer linksbuendig zeichnet, will ich die kompo so abaendern, das das verdammte ding den text IMMER zentriert zeichnet!!! mein problem ist, das meine bildschirmausgabe zeitkritisch ist, und das grid ja jedesmal zweimal gezeichnet muss. 1. um die daten zu aktualisieren und 2. um den text zu zentrieren koennte mir vorstellen, das dat irre performance kostet PS: Ist denn das ueberhaupt so ? :gruebel: mein prob ist , das ich mir grad den quelltext von grids.pas angeschaut hab, und da nicht durchblick in meinen delphiprogs verwende ich folgende routine zur zentrierung
Delphi-Quellcode:
in der komposource verwenden die aber, wenn ich das richtig sehe, nicht drawtext sondern textrect zur ausgabe??
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var s: string; begin if (Sender IS TStringGrid) then // Nur zur Sicherheit begin s := (Sender As TStringGrid).Cells[ACol, ARow]; // Text der Zelle holen (Sender As TStringGrid).Canvas.FillRect(Rect); // Zelle leer überzeichnen DrawText((Sender As TStringGrid).Canvas.Handle, PChar(s), Length(s), Rect, DT_SINGLELINE or DT_Center or DT_VCENTER); // Text zentriert zeichnen end; end; 2. frage was macht der schalter "default Drawing" bei stringgrids, als ich den false gesetzt hatte, sah mein grid eine wenig anders aus, aber es gingen verschiedene ereignisse nicht mehr > z. b onselectcell 3. was gibt der parameter State: im obige listing an ? danke schon mal im vorraus, den ueblichen verdächtigen :zwinker: |
Re: Borland D7 > Stringgridkompo aendern
Zitat:
Zitat:
Wenn du möchstest, das dein grid immer den text zentriert darstellt: gegen die Verwednung des ondrawcell ereignisses spricht nichts, du kannst dir natürlich auch eine eigene Komponente vom stringgrid ableiten und dort das ondrawcellereignis überschreiben. Zitat:
Mfg Frank |
Re: Borland D7 > Stringgridkompo aendern
@ keldorn,
beim mir werden jedesmal alle zellen neu geschrieben, und das grid wird meiner meinung nach doch 2. mal gezeichnet, denn wenn ich meine ondrawcell ereignis deaktiviere mit ondrawcell := nil geht die ausgabe viel fluessiger von statten bemerkung : ich meinte das die zellen alle 2 mal gezeichnet werden muessen, nicht das komplette grid ! im uebrigen muss ich 2 x 1439 werte andern, da ich seitenweise scrolle |
Re: Borland D7 > Stringgridkompo aendern
Das setzen von werten hat nicht automatisch ein neuzeichnen der Zelle zur Folge. Neugezeichnet wird die zelle nur, wenn sie im sichtbaren bereich liegt.
füge beim ondrawcell z.B. sowas ein
Delphi-Quellcode:
und wenn du dann z.B. neue werte setzt
listbox1.Items.add('col:'+inttostr(acol)+'row:'+inttostr(arow));
Delphi-Quellcode:
dann werden auch nur diese 5 Zellen gezeichnet, wenn sie im sichtbaren bereich liegen.
procedure TForm1.Button2Click(Sender: TObject);
begin stringgrid1.cells[1,1]:='Test'; stringgrid1.cells[2,2]:='Test'; stringgrid1.cells[3,3]:='Test'; stringgrid1.cells[4,4]:='Test'; stringgrid1.cells[5,5]:='Test'; end; Zitat:
Zitat:
|
Re: Borland D7 > Stringgridkompo aendern
@ keldorn,
bei mir sind alle zellen sichbar !!!! deswegen zeichnet das grid auch zweimal bei ersten internen aufruf von ondrawcell aktualisiert das grid die zellen, und zeichnet linksbuendig, danach wird doch erst mein ondrawcell aufgerufen,das die zellen zentriert zeichnet oder ??? bitte korrigiert mich falls dat nicht stimmt |
Re: Borland D7 > Stringgridkompo aendern
Hai richard,
da ich dein Projekt ja kenne weis ich ja auch das immer alles neu gezeichnet wird (es geht um die Anzeige in einem HEX-Editor). Was ich mir vorstellen kann ist das das Zentrieren einfach viel länger dauert als das linkbündig zeichnen. Es muss ja jedesmal erst berechnet werden wo der Text stehen soll. Teste doch einmal wie die Performanc bei deiner OnDrawCell ist wenn Du den Text linksbündig ausgeben lässt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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-2025 by Thomas Breitkreuz