AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Neuzeichnen eines Steuerelements verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Neuzeichnen eines Steuerelements verhindern

Ein Thema von MatthiasR · begonnen am 29. Jul 2010 · letzter Beitrag vom 30. Jul 2010
Antwort Antwort
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#1

Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:09
Delphi-Version: 2005
Folgende Frage: kann man temporär das Neuzeichnen eines Controls unterbinden? Konkret geht es um ein StringGrid, das auf einem Formular liegt. Während der Gridinhalt überarbeitet wird (es werden alle Zeilen analysiert und überflüssige gelöscht), soll das Steuerelement nicht ständig neu gezeichnet werden, sondern erst, nachdem die Überarbeitung vollständig abgeschlossen wurde.

Wie geht das? Gibt es da Methoden a la "DisableRepaint" und "EnableRepaint" oder so ähnlich?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:11
BeginUpdate/EndUpdate
Markus Kinzler
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#3

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:18
BeginUpdate/EndUpdate
In welcher Klasse sind die Methoden definiert?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:24
Bei Google suchenTStringGrid BeginUpdate führt zu diesem Thread im Embarcadero-Forum.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:28
In der StringList-Klasse
Je nach dem was du einfügst also für die Cols oder Rows setzen:

Delphi-Quellcode:
function LockGrid( Grid: TStringGrid);
var
    i: Integer;
begin
    for i := 0 to Grid.ColCount -1 do
    begin
        Grid.Cols[i].BeginUpdate;
    end;
end;

function UnLockGrid( Grid: TStringGrid);
var
    i: Integer;
begin
    for i := 0 to Grid.ColCount -1 do
    begin
        Grid.Cols[i].EndUpdate;
    end;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#6

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 14:31
Bei Google suchenTStringGrid BeginUpdate führt zu diesem Thread im Embarcadero-Forum.
Das StringGrid aus dem TMS-Komponentenpaket bietet die Methoden BeginUpdate und EndUpdate selbst bereits an, habe ich entdeckt. Intern wird eine Windows-Nachricht wie folgt verschickt:
SendMessage(Handle,WM_SETREDRAW,integer(False),0); Mit diesem Aufruf sollte das ganze eigentlich für jedes Control unter D7 funktionieren, oder? Gleich mal ausprobieren. Ansonsten versuche ich es mit deinem Ansatz, vielen Dank!

EDIT: Jawollja, mittels Windows-Message WM_SETREDRAW erfolgreich an einem TMemo ausprobiert

Geändert von MatthiasR (29. Jul 2010 um 14:36 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 29. Jul 2010, 17:37
Da gibt es sogar eine schöne Procedure dazu: LockControl()
Andreas
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#8

AW: Neuzeichnen eines Steuerelements verhindern

  Alt 30. Jul 2010, 08:03
Super, danke! Werde ich so in unser Projekt übernehmen
  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 20:40 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