Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Problem bei MDIChild Enabled (https://www.delphipraxis.net/176884-problem-bei-mdichild-enabled.html)

e-gon 2. Okt 2013 10:32

Problem bei MDIChild Enabled
 
Hallo!

Mein Programm dient zur Thumbnail-Betrachtung und MDIChilds repräsentieren verschiedene Verzeichnisse. Je nach Anzahl von Bildern im Verzeichnis kann das Laden eines MDIChilds auch mal mehrere Sekunden dauern. Wird aber während des Ladevorgangs der Scrollbalken des Childs bewegt, wird das nächste erzeugte Vorschaubild versetzt auf das MDIChild gezeichnet.

Um dies zu verhindern setzte ich zuvor
Delphi-Quellcode:
Self.Enabled:= False
und nach dem Ladevorgang auf True. Danach kommt allerdings kein MouseWheel-Ereignis mehr bei dem MDIChild an. Erst wenn ich ein anderes MDIChild anklicke und dann zurück auf das ursprüngliche Child wechsle, empfängt das MDIChild wieder die Ereignisse.

Vergeblich versucht habe ich bereits:
Delphi-Quellcode:
Self.BringToFront;
Self.SetFocus;
Self.Show;
Self.Repaint;
Weiß jemand welche Eigenschaft/Methode ich setzen/aufrufen muss um wieder zum Empfänger der MouseWheel-Ereignisse zu werden?

Gruß
e-gon

e-gon 17. Okt 2013 09:11

AW: Problem bei MDIChild Enabled
 
Vielen Dank für die zahlreichen Hilfestellungen! :thumb:

baumina 17. Okt 2013 09:29

AW: Problem bei MDIChild Enabled
 
Mir fehlt die Vorstellungskraft deines Problems.

Uwe Raabe 17. Okt 2013 09:31

AW: Problem bei MDIChild Enabled
 
Mal abgesehen davon, daß MDI wie auch Delphi 6 halt nicht gerade dem Stand der Technik entspricht, ist die Hauptursache für fehlende Antworten eine unzureichend gestellte Frage. Wenn ich, wie in diesem Fall, erst selbst umständlich ein Testszenario aufbauen muss, lass ich es lieber gleich bleiben.

Du kannst natürlich jederzeit professionelle Hilfe gegen Bezahlung nachfragen. Auch in diesem Forum gibt es einige Leute, die damit ihren Lebensunterhalt verdienen.

Volker Z. 17. Okt 2013 23:16

AW: Problem bei MDIChild Enabled
 
Hallo,

Zitat:

Zitat von Uwe Raabe (Beitrag 1232258)
[...] Wenn ich, wie in diesem Fall, erst selbst umständlich ein Testszenario aufbauen muss, lass ich es lieber gleich bleiben. [...]

Dazu hatte ich auch keine große Lust. Daher nur:
  • Form1 (fsMDIForm) mit einem Button
  • Form2 (fsMDIChild) mit einem übergroßen Panel (wir wollen ja auch scrollen) und ein Timer, der die längere Ladezeit simuliert

Dann noch etwas Code
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  f : TForm2;
begin
  f := TForm2.Create (Self);
  f.Show
end;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
  AutoScroll := True;
  Enabled   := False
end;

procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  ScrollBy (0, WheelDelta)
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;

  Enabled := True;
  SetFocus
end;
Wird der Timer getriggert kommt das Form in den Vordergrund (falls von einem anderen Form überdeckt) und das Scrollen per Mausrad ist problemlos möglich.

Also wird es wohl irgendwo an Deinem Code haken. Was, warum, wieso, weshalb, sorry, da habe ich keine Lust mit der langen Stange im Nebel zu stochern. Gib den hilfswilligen hier im Forum mal etwas mehr Infos und Dir wird sicherlich geholfen.

BTW völlig kontraproduktiv sind Posts like:
Zitat:

Zitat von e-gon (Beitrag 1232254)
Vielen Dank für die zahlreichen Hilfestellungen! :thumb:

Mach Dir mal besser Gedanken darüber:
Zitat:

Zitat von Uwe Raabe (Beitrag 1232258)
[...] die Hauptursache für fehlende Antworten eine unzureichend gestellte Frage. [...]


Gruß

e-gon 21. Okt 2013 12:29

AW: Problem bei MDIChild Enabled
 
Hallo,

tut mir leid, wenn Ihr meine Fragestellung als unzureichend angesehen habt. Aber das hätte mir ja auch jemand auf meine Anfrage hin sagen können und mich nicht 14 Tage im Ungewissen lassen! Außerdem ist es nicht das erste Mal, dass ich hier Monologe führen musste! So warte ich beispielsweise bis heute auf eine Antwort zu diesem Thema!
Sorry, wenn ich deshalb etwas zu provozierend war!

@Uwe Raabe:
Ich weiß dass Delphi 6 nicht mehr auf dem neusten Stand ist. Aber ich habe damals verdammt viel Geld dafür ausgegeben!
Zitat:

Du kannst natürlich jederzeit professionelle Hilfe gegen Bezahlung nachfragen. Auch in diesem Forum gibt es einige Leute, die damit ihren Lebensunterhalt verdienen.
Das wusste ich nicht, klingt aber interessant! Wie würde ich bei Bedarf diese Leute kontaktieren?

@Volker Z.:
Danke für die Bemühungen! Aber am Wochenende habe ich nun endlich eine andere Lösung gefunden. Statt das MDIChild zu "disablen" setze ich die Top- und Left-Eigenschaften nun abhängig von den Scrollbalken.
Delphi-Quellcode:
IMG[Index].Top:= (Index div ColCount) * (OpThumbSize + 60) - Self.VertScrollBar.Position;
IMG[Index].Left:= (Index mod ColCount) * (OpThumbSize + 8) - Self.HorzScrollBar.Position;
Scheint auch die elegantere Lösung zu sein...

Gruß
e-gon

Uwe Raabe 21. Okt 2013 13:35

AW: Problem bei MDIChild Enabled
 
Zitat:

Zitat von e-gon (Beitrag 1232619)
Zitat:

Du kannst natürlich jederzeit professionelle Hilfe gegen Bezahlung nachfragen. Auch in diesem Forum gibt es einige Leute, die damit ihren Lebensunterhalt verdienen.
Das wusste ich nicht, klingt aber interessant! Wie würde ich bei Bedarf diese Leute kontaktieren?

http://www.delphipraxis.net/66-job-b...e-und-gesuche/


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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