![]() |
TMemo scrollt bei hidden Form nicht
Hallo zusammen,
ich würde gerne mal wissen, warum ein TMemo nur dann automatisch scrollt, wenn die Form auf der es liegt sichtbar ist. Ich füge ganz normal mit "Memo.Lines.Add('blafasel')" eine Zeile ein. Das klappt auch wunderbar (warum sollte es auch nicht) scrollten tut sie auch Ordnungsgemäß bei jedem Eintrag. Blende ich nun aber die Form aus per Hide, um dann nur noch ein TrayIcon zu haben, weigert sich das Memo bei neuen Daten weiter runter zu scrollen. Woran liegt das? Was kann ich machen? Danke & Grüße ddcool |
Re: TMemo scrollt bei hidden Form nicht
Moin, Moin,
würde sagen: Macht auch nicht viel Sinn, optische Anzeigen zu aktualisieren, wenn ein Control unsichtbar ist. Das verbraucht doch nur unnötige Ressourcen. Abhilfe: Programm sorgt selbst für die Bewegung, wenn das Form aktiviert wird. |
Re: TMemo scrollt bei hidden Form nicht
Jo die Frage ist jetzt, wie? :-D
Grüße ddcool |
Re: TMemo scrollt bei hidden Form nicht
Zitat:
Du kannst das Memo im Form.Show oder Form.Activate aktualisieren mit z.B. Memo.Refresh oder Memo.Repaint oder so, |
Re: TMemo scrollt bei hidden Form nicht
Hi, leider geht das so nicht. Mit Move hab ich auch nix hinbekommen.
Ich könnt k***** :-) . Immer diese einfachen kleinen Dinge sind es, wo man sich festfrisst. Habtz ihr noch irgendwelche Ideen? Grüße ddcool |
Re: TMemo scrollt bei hidden Form nicht
Was ist das Ziel?
Soll bei Aktivierung die letzte Memo-Zeile in den sichtbaren Beriech gescrollt werden? |
Re: TMemo scrollt bei hidden Form nicht
Genau das soll passieren. Ich habe jetzt aber überhaupt keine Ahnung, wie ich das hinbekomme.
Es gibt zwar die Funktion ScrollBy, allerding benötigt diese Funktion koordinaten. |
Re: TMemo scrollt bei hidden Form nicht
Hm, füge das mal z.B. in OnActivate ein...
Delphi-Quellcode:
Memo1.selstart:=length(memo1.text);
Memo1.Perform(em_Scrollcaret,0,0); |
Re: TMemo scrollt bei hidden Form nicht
Klingt gut, funktioniert aber leider nicht.
Es ist zum verrückt verden. Ich mache folgendes um die Form zu verstecken und wieder anzuzeigen: Verstecken bei minimieren:
Delphi-Quellcode:
Wieder anzeigen bei Doppelklick auf TrayIcon:
procedure TfrmMain.WMSysCommand(var Msg: TWMSysCommand);
begin if Msg.CmdType = SC_MINIMIZE then begin TrayIcon.Visible := True; Self.Hide; end else inherited; end;
Delphi-Quellcode:
Vielleicht hilft das noch weiter. Ich bin mit meinem latein etwas am Ende!
procedure TfrmMain.TrayIconDblClick(Sender: TObject);
begin Self.Show; TrayIcon.Visible := False; end; Grüße ddcool |
Re: TMemo scrollt bei hidden Form nicht
Zwei Anmerkungen:
a) Für das TrayIcon gibt es z.B. die Komponente CollTrayIcon. Die funktioniert sehr gut, es gibt jede Menge Threads hier in DP dazu. b) Du kannst eine Message an das TMemo schicken. Hab aber die Message-ID vergessen. Benutz die DP-Suche dafür. |
Re: TMemo scrollt bei hidden Form nicht
tja, das ist jetzt etwas seltsam, hab's mal ausprobiert - bei mir funktioniert das nach
OnActivate auch nicht. Ruft man es mit einem Button auf, geht es. Mal schauen, woran es liegt :evil: // @RavenIV - ähhmmmm, was macht denn das Perform in Post#8? Wird da 'ne Grusskarte verschickt, oder 'ne Message? :mrgreen: |
Re: TMemo scrollt bei hidden Form nicht
So fertig, falsches Event: Bau den Code in Application.OnRestore ein, dann funktioniert es!
|
Re: TMemo scrollt bei hidden Form nicht
Nein geht bei mir auch nicht. Arghhh! :-D
Habe jetzt:
Delphi-Quellcode:
procedure TfrmMain.RestoreForm(Sender: TObject);
begin Memo2.SelStart := Length(Memo2.Text); Memo2.Perform(EM_SCROLLCARET,0,0); end; procedure TfrmMain.FormCreate(Sender: TObject); begin Application.OnRestore := RestoreForm; end; |
Re: TMemo scrollt bei hidden Form nicht
Zitat:
|
Re: TMemo scrollt bei hidden Form nicht
Gut geraten!
Dann wissen wir ja jetzt auch, wieso es nicht funktioniert! :love: |
Re: TMemo scrollt bei hidden Form nicht
wurde das Form zu diesem zeitpunkt noch nie gezeigt oder war es vorher schonmal sichtbar?
|
Re: TMemo scrollt bei hidden Form nicht
Und wie mach ichs dann? per SendMessage oder PostMessage???
@SirThornberry: das ist egal, weder bei den einen noch bei dem anderen funktioniert es. |
Re: TMemo scrollt bei hidden Form nicht
Nachtrag zum Thema "Grußkarte", die Delphi-Hilfe sagt zu Perform...
Zitat:
|
Re: TMemo scrollt bei hidden Form nicht
Zitat:
Code:
die meisten "Fenster"/Steuerelemente werden von der VCL erst erstellt, wenn sie angezeigt werden (und manchmal auch nur solange sie angezeigt werden).
function TControl.Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
var Message: TMessage; begin Message.Msg := Msg; Message.WParam := WParam; Message.LParam := LParam; Message.Result := 0; [b]if Self <> nil then WindowProc(Message);[/b] Result := Message.Result; end; evtl. hilft da ein Aufruf von (Control).HandleNeeded? |
Re: TMemo scrollt bei hidden Form nicht
Moin, Moin himitsu!
Erster SAchverhalt war mir bewusst, der Zweite hat mich überrascht - da habe ich wieder etwas gelernt. Zum konkreten Fall: Hatte die Situation nachgestellt und da hat das Perform() funktioniert. Allerdings erfolgte das Minimize per BorderIcon und das Wiederherstellen ebenfalls händisch - vermutlich wird hierin der entscheidende Unterschied begründet sein, dass es bei ddcool nicht funktioniert. |
Re: TMemo scrollt bei hidden Form nicht
So ich habe es jetzt geschafft. Das war ja wohl so simpel und ich dummerchen komm nicht drauf :-D
Delphi-Quellcode:
Danke an alle für die schnelle Hilfe. Schönen Tag noch wünscht
procedure TfrmMain.TrayIconDblClick(Sender: TObject);
begin Self.Show; TrayIcon.Visible := False; Memo2.SelStart := Length(Memo2.Text); Memo2.Perform(EM_SCROLLCARET,0,0); end; ddcool |
Re: TMemo scrollt bei hidden Form nicht
Einen Schubser in diese Richtung hab ich Dir doch in meinem Beitrag #4 schon gegeben.
Da wolltest Du es ja nicht wahrhaben... |
Re: TMemo scrollt bei hidden Form nicht
@RavenIV:
Ja deinen Vorschlag aus Post #4 habe ich ja auch wahrgenommen und ausprobiert, allerdings funktionerte es weder im OnShow, noch im OnActivate. Aber dass ich so "schlau" bin und nicht drauf komme, dass einfach nach dem Form.Show zu machen, war wohl mein Blödheit :wall: Trotzdem nochmal DANKE! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz