AGB  ·  Datenschutz  ·  Impressum  







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

Borland D7 > Stringgridkompo aendern

Ein Thema von richard_boderich · begonnen am 25. Jul 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#1

Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 10:23
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 ?

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:
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;
in der komposource verwenden die aber, wenn ich das richtig sehe, nicht drawtext sondern textrect zur ausgabe??

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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 10:52
Zitat:
koennte mir vorstellen, das dat irre performance kostet
es werden bei ondrawcell nur die Zellen neu gezeichnet, wo es erforderlich ist. Du zeichnest also immer nur einen ausschnitt, nie das ganze grid mit einmal.

Zitat:
in der komposource verwenden die aber, wenn ich das richtig sehe, nicht drawtext sondern textrect zur ausgabe
du kannst auch mit textout/textrect einen text zentriert darstellen, du mußt die dann den zeichenpunkt selbst ausrechnen, drawtext ist da eleganter.

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:
2. frage was macht der schalter "default Drawing" bei stringgrids,
...
3. was gibt der parameter State: im obige listing an ?
Mit einem druck auf die F1-taste wärst du schneller gewesen

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 11:08
@ 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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 11:18
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
listbox1.Items.add('col:'+inttostr(acol)+'row:'+inttostr(arow)); und wenn du dann z.B. neue werte setzt
Delphi-Quellcode:
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;
dann werden auch nur diese 5 Zellen gezeichnet, wenn sie im sichtbaren bereich liegen.

Zitat:
beim mir werden jedesmal alle zellen neu geschrieben,
und das grid wird meiner meinung nach doch 2. mal gezeichnet,
woher weißtz du das? verwendest du noch irgendwo repaint etc?

Zitat:
bemerkung : ich meinte das die zellen alle 2 mal gezeichnet werden muessen, nicht das komplette grid !
ich verstehe nicht, was du damit sagen willst.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#5

Re: Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 11:42
@ 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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Borland D7 > Stringgridkompo aendern

  Alt 25. Jul 2004, 12:45
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  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 12:51 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