AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi StringGrid, OnDrawCell übermalt meine Bilder beim scrollen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid, OnDrawCell übermalt meine Bilder beim scrollen

Ein Thema von Lun · begonnen am 19. Jul 2007 · letzter Beitrag vom 19. Jul 2007
Antwort Antwort
Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#1

StringGrid, OnDrawCell übermalt meine Bilder beim scrollen

  Alt 19. Jul 2007, 14:28
Hi @ll,

ich versuche in einem StringGrid verschiedene Bilder in unterschiedliche Zellen zu laden. Das funktioniert soweit auch ganz
gut mit der OnDrawCell Methode.
Das Problem ist wenn das StringGrid zu ende geladen ist und ich durch die Einträge
scrolle ändern sich die Bilder alle in das Bild was als letztes eingetragen wurde.

Ich habe das Gefühl, das beim selektieren/scrollen jedes mal die Funktion OndrawCell die Zeile neu zeichnet und er nimmt dann den
letzten Wert der globalen Variablen Bild(Integer) als Index von der ImageList und zeichnet das letzte bild.

Ich will nicht das er neu zeichnet *grummel* Die Liste soll nur einmal gezeichnet werden und kann angesehen werden, und gescrollt.

Ich suche schon irgendein Property das selektieren verhindert, weil ich vermute das durch das makieren der Zeile die OnDrawCell Methode aufgerufen wird ?

Hier mal der Code der OnDrawCell:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
zelle: string;

begin

  if ((ACol = 1) and (ARow > 1)) then
  with (Sender as TStringGrid) do
  begin
        ImageList1.Draw(Canvas, Rect.Left, Rect.Top, bild); //Bild ist eine globale Variable vom Typ integer
  end;

end;

greetz Lun

Thx for Help
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: StringGrid, OnDrawCell übermalt meine Bilder beim scrol

  Alt 19. Jul 2007, 15:09
Zitat von Lun:
Hi @ll,

ich versuche in einem StringGrid verschiedene Bilder in unterschiedliche Zellen zu laden. Das funktioniert soweit auch ganz
gut mit der OnDrawCell Methode.
Das Problem ist wenn das StringGrid zu ende geladen ist und ich durch die Einträge
scrolle ändern sich die Bilder alle in das Bild was als letztes eingetragen wurde.

Ich habe das Gefühl, das beim selektieren/scrollen jedes mal die Funktion OndrawCell die Zeile neu zeichnet und er nimmt dann den
letzten Wert der globalen Variablen Bild(Integer) als Index von der ImageList und zeichnet das letzte bild.

Ich will nicht das er neu zeichnet *grummel* Die Liste soll nur einmal gezeichnet werden und kann angesehen werden, und gescrollt.

Ich suche schon irgendein Property das selektieren verhindert, weil ich vermute das durch das makieren der Zeile die OnDrawCell Methode aufgerufen wird ?

...
greetz Lun

Thx for Help
Hallo,

du hast keinen Einfluss darauf, wann Windows ein Neuzeichnen anfordert, du must also in allen Fällen, in denen du so etwas wie "Ownerdraw" verwendest, dafür sorgen, dass IMMER das richtige gezeichnet wird, nicht nur einmal!

Du must in diesem Fall also alle Bilder vorhalten und je nach Row/Col das richtige zeichnen.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#3

Re: StringGrid, OnDrawCell übermalt meine Bilder beim scrol

  Alt 19. Jul 2007, 15:29
Danke Reinhard,

habe verstanden dachte das Event würde vom StringGrid ausgehen.
Dann weiß ich wie ich das lösen kann.

greetz Lun
  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 04:18 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