Autor Beitrag
J.Borchert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 150

WIN10
XE2 Professional
BeitragVerfasst: Mo 26.09.11 17:53 
Ich erstelle zur Laufzeit einige Panele auf einem StringGrid. Das klappt soweit ohne Probleme. Wenn ich jetzt an dem StringGrid scrolle, kommt die ganze Ansicht vollkommen durcheinander. Es handelt sich um einen Kalender, auf dem Informationen liegen. Pro Bildschirm ist etwa ein Monat sichtbar, deshalb möchte ich also scrollen.

Was muß ich tun, damit die Panele an ihrer originalen Stelle bleiben bzw. mitscrollen.
(also fest am StringGrid kleben ;-)

_________________
Wer immer macht was er schon kann, bleibt immer das, was er schon ist. "H.Ford"
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 27.09.11 01:21 
Ich nehme an, du platzierst die Panels in den passenden CellRects?

Das Grid löst beim Scrollen das Ereignis OnTopLeftChanged aus, da kannst du dann die neuen Positionen ermitteln/setzen.

user profile iconJ.Borchert hat folgendes geschrieben Zum zitierten Posting springen:
Was muß ich tun, damit die Panele an ihrer originalen Stelle bleiben bzw. mitscrollen.
(also fest am StringGrid kleben ;-)
Das tun sie ja. Du willst, dass sie sich bewegen, nicht, dass sie kleben :P

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
J.Borchert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 150

WIN10
XE2 Professional
BeitragVerfasst: Di 27.09.11 20:26 
Ja das habe ich versucht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.sg4TopLeftChanged(Sender: TObject);
var i:integer; r:TRect;
begin
 for i:=1 to BitBtn77.Tag do // Anzahl der erstellten Panele
  begin r := sg4.CellRect( TPanel(sg4.FindComponent('pan'+IntToStr(i))).Tag,
                           TPanel(sg4.FindComponent('pank1'+IntToStr(i))).Tag );
        // in den Tags werden Original-Zellkoordinaten gespeichert
   with TPanel(sg4.FindComponent('pan'+IntToStr(i))) do
    begin Left := r.Left; Top := r.Top; end;
  end;
 sg4h.LeftCol:=sg4.LeftCol; // scrollen vom Header-Grid synchron
end;


Die Procedure arbeitet nicht so, wie es soll. Fehlt noch etwas ?

_________________
Wer immer macht was er schon kann, bleibt immer das, was er schon ist. "H.Ford"