AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView-Position bei ShowModal

Ein Thema von easywk · begonnen am 4. Mai 2010 · letzter Beitrag vom 4. Mai 2010
Antwort Antwort
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#1

ListView-Position bei ShowModal

  Alt 4. Mai 2010, 08:51
Moin, moin,

irgendwie stehe ich gerade ziemlich auf dem Schlauch Ich habe ein TListView mit vsReport. Im FormCreate des Formulars fülle ich die Liste, markiere einen Eintrag und srolle die Liste dann auf diesen Eintrag. Anschließend zeige ich das Formular mit ShowModal an. Leider ist zwar der gewünschte Eintrag markiert, aber die Liste ist nicht gescrollt sondern steht ganz oben.

Die Funktionen zum Markieren und Scrollen funktionieren. Wenn ich die gleiche Aktion, die ich momentan im FormCreate mache, nach dem ShowModal (z.B. bei einem ButtonClick) mache, wird sauber gescrollt. Ich habe irgendwie den Verdacht, dass mir das ShowModal die Position wieder zurücksetzt.

Hat jemand eine Idee dazu?

Gruß
easy
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 08:56
Vieles funktioniert halt nicht (richtig), wenn das Control nicht sichtbar ist.
(oftmals werden die Controls erst richtig erstellt, wenn sie angezeigt werden)

Verschiebe das Scrollen mal nach OnShow ... vielleicht geht es so.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:00
Habe ich schon ausprobiert. Funktioniert leider auch nicht. Und ich wüsste nicht, wie ich nach dem ShowModal noch mal ans Ruder komme um dann zu scrollen ...
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#4

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:04
Was passiert denn, wenn du mal .Show, statt .ShowModal verwendest?
(natürlich die Form danach nicht sofort wieder verschwinden lassen)

bzw. versuch es mal so.
Delphi-Quellcode:
MyForm.Show;
Application.ProcessMessages;
{hier Scrollen}
MyForm.Hide;
MyForm.ShowModal;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#5

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:05
Wie scrollst du denn? Mit TListItem.MakeVisible?
Uli Gerhardt
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:13
Aufruf mit Show anstatt ShowModal funktioniert leider auch nicht. Auch nicht, wenn ich dazwischen das Application.ProcessMessages habe. Ich habe wirklich den Verdacht, dass im Show die Scrollposition wieder auf ganz oben gesetzt wird.

Scrollen tue ich mit einer Funktion, die ich so schon häufig eingesetzt habe:
Delphi-Quellcode:
procedure ListViewScrollTo(Liste: TListView; ToIndex: Integer);
var dy:Integer;
begin
  if (Liste.Items.Count>1) and (ToIndex>0) then
    begin
      // Höhe einer Zeile
      dy:=(ToIndex-Liste.TopItem.Index)*
          (Liste.Items[Liste.TopItem.Index+1].GetPosition.Y-
           Liste.Items[Liste.TopItem.Index].GetPosition.Y);
      Liste.Scroll(0,dy);
    end;
end;
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:20
Und wenn du vor dem ShowModal noch ein Refresh für die TListView aufrufst?
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: ListView-Position bei ShowModal

  Alt 4. Mai 2010, 09:41
Ok, ich glaube jetzt habe ich den Grund gefunden. Das Liste.Scroll() funktioniert in diesem Fall noch nicht. Wenn ich mir mittels Debugger Form.Liste.TopItem.Index anzeigen lassen, dann steht dort nach dem Aufruf meine Scroll-Funktion normalerweise der korrekte Wert drinnen. Mache ich das aber, ehe das Control überhaupt angezeigt worden ist, bleibt TopIndex immer auf 0, obwohl Liste.Scroll(0,dy) mit einem eindeutige dy-Wert aufgerufen wird.

Benutze ich anstatt meiner Scroll-Funktion Liste.ItemFocused.MakeVisible(FALSE) dann funktioniert es. Zwar steht der markierte Eintrag dann nicht (wie eigentlich gewollt) oben in der Liste sondern irgendwo in der Liste, aber immerhin ist er überhaupt sichtbar. Besser als gar nichts.

Erstmal danke für die vielen Hinweise
easy
Björn
if all else fails - read the instructions
  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 06:34 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