AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

Ein Thema von TheJeed · begonnen am 6. Okt 2010 · letzter Beitrag vom 11. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von TheJeed
TheJeed

Registriert seit: 11. Jun 2009
Ort: Leipzig
57 Beiträge
 
#1

Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 00:05
Hallo zusammen!

Ich habe eine für mich sehr interessante Problemstellung von einem Freund vorgelegt bekommen. Er arbeitet alltäglich mit einer großen Industrielösung, wobei eine gigantische Datenmenge zu verarbeiten ist - soweit ich weiß geht es darum, ein großes Dokument, welches eine Knotenstruktur beinhaltet, zu öffnen. Das Öffnen nimmt fünf Stunden in Anspruch, da die Anwendung "nebenbei" damit beschäftigt ist, die Daten in regelmäßigen, kurzen Abständen in der GUI zu aktualisieren.

Wenn man das entsprechende Fenster davon abhält, indem man auf seinen Rahmen klickt und die Taste gedrückt hält, als wollte man seine Größe ändern, dann wird die Oberfläche nicht weiter aktualisiert und das Öffnen beschleunigt sich etwa um den Faktor 10(!).

Unsere Idee war nun, dem Fenster die entsprechende Aktion programmatisch von Delphi aus vorzugaukeln. Unser er Ansatz war, WM_SIZING - Messages an das Fenster zu senden, was aber keinen Erfolg brachte. Auch mit den Mausklick-Messages hat es nicht funktioniert.

Daher meine Fragen: Wie kann ich einem Fenster vortäuschen, dass ich es gerade in den "Größe ändern" - Modus versetze? Wenn Euch dazu etwas einfällt - ist es möglich, die Maus trotzdem nebenbei zum Arbeiten zu nutzen? Hat jemand ne andere Idee?

Vielen Dank,

David

P.S.: Anfragen beim Hersteller werden zwar berücksichtigt, benötigen aber meist ein halbes Jahr oder länger, um als Patch/Update ins Produkt einzufließen und sind daher keine Option.
Teitmaschine Go!
  Mit Zitat antworten Zitat
plusplus

Registriert seit: 30. Jul 2010
106 Beiträge
 
Delphi 2009 Architect
 
#2

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 00:51
Vieleicht koenntest du versuchen den fester zu verbergen. Dann wird es nicht updated.

Mit FindWindow kannst du den Handle finden. Und dann mit ShowWindow(Handle, SW_HIDE) es verbergen.

Aber um ehrlich zu sein, dass wird dir vieleicht 25% zeit ersparen. Ich denke naemlich dass deine datei verarbeited wird, und darum braucht es so lange. Fenster Update ist da bestimt nicht ein grosses faktor.
Grid Computing made simple - http://xerocoder.com
  Mit Zitat antworten Zitat
Benutzerbild von TheJeed
TheJeed

Registriert seit: 11. Jun 2009
Ort: Leipzig
57 Beiträge
 
#3

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 01:17
Danke für den Tipp - wir werden es probieren. Wir wissen aber bereits, dass es am Update des Fensters liegt, denn wenn wir auf den Rahmen klicken, und dann die linke Maustaste beschweren, sodass sie dauerhaft gedrückt wird, führt das exakt zur erwähnten Reduzierung von 5 Stunden auf 20 Minuten.
Teitmaschine Go!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 01:35
Minimiere es einfach.

Fenster Update ist da bestimt nicht ein grosses faktor.
Unter Windows schon.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.442 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 08:57
Ich würde mal sagen das ist der Falsche Ansatz-

Ich würde die Komponenten die die Daten anzeigen das Aktualisieren unterbinden undzwar mit BeginUpdate und EndUpdate.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 09:05
Schau dir mal MSDN-Library durchsuchenWM_SETREDRAW an bzw. hier
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 10:25
Ich würde mal sagen das ist der Falsche Ansatz-

Ich würde die Komponenten die die Daten anzeigen das Aktualisieren unterbinden undzwar mit BeginUpdate und EndUpdate.
Ich glaube, er hat keinen Zugriff auf den Quellcode. Das scheint ein fremdes Programm zu sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TheJeed
TheJeed

Registriert seit: 11. Jun 2009
Ort: Leipzig
57 Beiträge
 
#8

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 12:41
Genau, es ist eine kommerzielle closed source Anwendung. WM_SETREDRAW werden wir uns mal ansehen
Teitmaschine Go!
  Mit Zitat antworten Zitat
shmia

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

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 16:04
Ungetestet:
Delphi-Quellcode:
procedure LockWindow(handle:HWND; lock: boolean);
begin
   if handle = 0 then exit;
   if lock then SendMessage(handle, WM_SETREDRAW, 0, 0)
   else begin
      SendMessage(handle, WM_SETREDRAW, 1, 0);
      RedrawWindow(handle, nil, 0,
         RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

AW: Fenster vom Rendern von Daten abhalten um Applikationsleistung zu optimieren

  Alt 6. Okt 2010, 18:04
Prüfe bitte bei der Funktion auch auf INVALID_HANDLE_VALUE.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf