Delphi-PRAXiS
Seite 7 von 7   « Erste     567   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [SUCHE] Mentor/Meister /Leherer (https://www.delphipraxis.net/131264-%5Bsuche%5D-mentor-meister-leherer.html)

Gabberjool 28. Mär 2009 00:28

Re: [SUCHE] Mentor/Meister /Leherer
 
sry hab das wohl ganz vergessen anzugeben ich bin ein anfänger und schnall mit deiner aussage rein garnix....

Beispiel-Code wäre von Vorteil

jaenicke 28. Mär 2009 01:43

Re: [SUCHE] Mentor/Meister /Leherer
 
Dann zeig doch einfach einmal den Code, der bei dir währenddessen so lange dauert, dass eine Fortschrittsanzeige nötig ist. Da gibts nicht viel zu ändern dann.
Delphi-Quellcode:
CopyFile(...)
ProgressBarX.Position := 20;
Application.ProcessMessages; // damit dein Programm noch reagiert
CopyFile(...)
ProgressBarX.Position := 50;
Application.ProcessMessages; // damit dein Programm noch reagiert
Und so weiter. Du musst die Position eben zwischen deinem restlichen Code setzen.

Gabberjool 28. Mär 2009 04:50

Re: [SUCHE] Mentor/Meister /Leherer
 
ach so.. also wider genau wie die Simulation, ausser das ich zwischen den Begin end; Blöcke das kopieren rein schreib....

was meinst du damit:
Delphi-Quellcode:
Application.ProcessMessages; // damit dein Programm noch reagiert
hab schon mal gefragt was das ist aber ich verstehe es nicht....

jaenicke 28. Mär 2009 05:03

Re: [SUCHE] Mentor/Meister /Leherer
 
Was du sicherlich weißt: Windows funktioniert mit Botschaften, die im Hintergrund zwischen Fenstern ausgetauscht werden. Dafür hat ein Programm eine Botschaftenwarteschlange, in der die Botschaften ankommen. Von dort werden sie dann abgeholt und ausgewertet.

Solange du jetzt Code ausführst, können diese Botschaften nicht verarbeitet werden. Deshalb sieht es für das System so aus als wäre die Anwendung abgestürzt, denn diese reagiert nicht mehr auf die an sie gesendeten Botschaften. Zu den Botschaften gehören auch die Botschaften, die das Neuzeichnen des Fensters verursachen würden. Das heißt Änderungen, die du an der Oberfläche (Labels, ...) vornimmst, werden auch zunächst nicht sichtbar.

Durch das Aufrufen von Application.ProcessMessages wird die Botschaftenwarteschlange abgearbeitet und die darin aufgelaufenen Botschaften werden verarbeitet. Deshalb sieht die Anwendung nach außen hin wieder reagierend aus und die Oberfläche wird ggf. neu gezeichnet.

Gabberjool 28. Mär 2009 05:56

Re: [SUCHE] Mentor/Meister /Leherer
 
WOW... echt nett, für die ausführliche Erklärung. Und jetzt ist es, auch mir klar wofür das ist....

BESTEN DANK

Gabberjool 6. Jul 2009 09:18

Re: [SUCHE] Mentor/Meister /Leherer
 
4monate später....

So hab Sau viel gelesen versteh auch 1000mal mehr als vorher. Hab schon unzählige Tools fertig gestellt ohne irgendwelche fragen zu stellen jedoch stellt sich mir momentan ein Problem.

1.
Ich Bau gerade an meinem eigenen Buchhaltung's Programm Rum und es funktioniert auch sehr gut, da ich aber über die Listbox die Einträge mache und das nicht so schön ausschaut würd ich halt gern das gazne über sheets erstellen jedoch kann ich die sheets noch so ansprechen wie ich will die reagieren nicht drauf oder der Compiler spuckt Fehler aus.
(jedoch mehr dazu wenich mit meinem pc wider Online bin)....

2.
Hab ich noch eine frage durch die Tutorials usw weiss ich ja wie man procedure anlegt und Funktionen jetzt aber wen ich eine normale Prozedur wie z.b. eines Editors für das Neu,öffnen,Speichern schreib:
Delphi-Quellcode:
Private
  procedure DateiDialog(sender: TObject);

procedure TForm1.DateiDialog(sender: TObject);
begin
  case TComponent(sender).Tag of
    1:
    begin
   Memo.Clear;
   FileName:='Neue Date.txt';
     end;
   
    2:
    begin
    if openDialog.execute then
   begin
   Memo.lines.loadFromFile(OpenDialog.FileName);
    FileName:=OpenDialog.FileName;
   StatusBar.Panels[0].Text.FileName;
   end;
   
    3:
    begin
   FileName:=SaveDialog.FileName;
   SaveDialog.InitiDir:=ExtractPath(SaveDialog.fileName);
   if SaveDialog.execte then
     begin
     memo.lines.savetofile(SaveDialog.FileName);
     FileName:=SaveDialog.Filename;
     Statusbar.panles[0].text:=filename;
  end;
end;


procedure TForm1.button1click(Sender: TObject);
begin
  DateiDialog(Sender);
end;
(weiss nicht ob der Code 100% grammatikalisch stimmt hab es aus dem Kopf geschrieben)

Ist es besser das ganze in einer Prozedur zu halten oder auf jeden einzelnen Button zu schreiben...
oder ist der Sinn eine Prozedur nur das es halt einfach ist wen man es mehrmals verwendet.
(hab zurzeit kein Internet sehe also heute bis 12:00 und dann erst am 10.August bis dann danke schon mal für die antworten... great

Codewalker 6. Jul 2009 10:07

Re: [SUCHE] Mentor/Meister /Leherer
 
Im Prinzip ist es Geschmackssache. Ich persönlich würde jeweils eine eigene Methode dafür schreiben - zumal Öffnen und Speichern inhaltlich unterschiedliche Dinge machen und das ganze ja auch mal aufwändiger werden kann. Dann ist eine Riesen-Methode schwerer zu durchblicken. Ich weiß ja nicht, wie dein Programm aussieht, aber mit einem ActionManager und Actions kann viel zusätzliche Arbeit gerade bei Öffnen/Speichern/etc. vermeiden.

Gabberjool 6. Jul 2009 12:03

Re: [SUCHE] Mentor/Meister /Leherer
 
ja das klar das mach ich normal auch über den aktionmanager hatte nur Grad kein andre Beispiel code zu hand oder so...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Seite 7 von 7   « Erste     567   

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