[erledigt?] Memo.visible:=False und dennoch Sichtbar

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

[erledigt?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Hallo Zusammen.

Hoffe es gehört in den Bereich hier.

Also das Ganze ist nicht so einfach, wie es sich in der Überschrift liest. Ein Memo-Feld, dass so lange unsichtbar sein soll, bis ich auf einen Button drücke, ist dennoch schon von Anfang an sichtbar. Aber nur unter bestimmten umständen.
Ich habe ein Tablesheet mit mehren Seiten. In einer dieser Seiten ist das Memo-Feld, welches beim erstellen auf Unsichtbar (Visible:=False) eingestellt ist. Wenn ich aber dann zu der Seite mit dem Memo blättere, dann ist es sichtbar. Erst wenn ich dann sichtbar und wieder unsichtbar (per Button) mache, bleibt es beim weiterem hin und her Blättern unsichtbar. Hoffe ich konnte es einigermaßen gut erklären.

Dabei sprechen wir hier von einem extra probierten kleinen Programm, zwecks testen, ob sich das wiederholen lässt.
Bei meinem eigentlichen Programm ist es noch verwirrender. Dort ist es zuerst auch beim hin und her blättern unsichtbar. Erst wenn ich dann in der ComboBox was auswähle, die Seite verlasse und wieder zurück komme, wird es sichtbar. Bei meinem kleinen extra Testprogramm spielt dies wiederum keine Rolle.

Kann mir einer erklären, was da los ist?
Oder noch besser: Wie bekomme ich das nun hin, dass mein Memo-Feld unsichtbar bleibt, bis ich es per Button sichtbar machen will.

Danke.

Gruß
Erwin

Edit:
Ok, habe das wesentliche Problem jetzt doch wieder so gelöst wie ich es eigentlich ungern mache: Habe das Memo (in dem Fall Visible:=True) in ein Panel gepackt. Und dieses Panel halt auf Visible:=False gesetzt. Beim Panel treten nämlich diese Fehler nicht auf. Aber ... wieder eine Komponenten mehr im Programm ... .
Wissen würde ich trotzdem gerne, was da los ist, und wie man das verhindern/unterbinden kann?
Zuletzt geändert von Erwin am So 12. Jun 2016, 14:51, insgesamt 2-mal geändert.
Lazarus 2.2.0 / FP 3.2.4

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von Soner »

Ich habe das was du beschreibst nachgemacht und bei mir funktioniert es wie es sein soll.
Hast du am Anfang im Formulareditor "Memo1.Visible:=false;" gemacht?

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von wp_xyz »

Wenn deine Signatur stimmt, hast du einen ziemlich alten Lazarus - ich meine, ich hätte sowas ähnliches schon mal gesehen. Heute kann ich das Verhalten aber weder auf Windows noch auf Linux Mint qt/gtk2 bestätigen. --> Hol dir einen aktuellen Lazarus

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 993
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von kralle »

Moin,

wie wäre es, wenn Du das Memo-Feld nicht schon zur Entwurfszeit erzeugst, sondern erst beim Klick auf dem Button?

Gruß Heiko
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Danke für die vielen Antworten.

Soner hat geschrieben:Ich habe das was du beschreibst nachgemacht und bei mir funktioniert es wie es sein soll.
Hast du am Anfang im Formulareditor "Memo1.Visible:=false;" gemacht?

Ja, es ist beim erstellen/compilieren auf False gesetzt. Und man muss erst hin und her blättern. Also wenn die Seite mit dem Memo beim Start angezeigt wird, ist das Memo zuerst auch noch verschwunden. Wenn man diese Seite verläst und wieder zurück kehrt, ist es dann da. Und scheinbar immer noch auf False. Weil wenn ich dann das Button zum Verschwinden anklicke, bleibt es noch. Erst wenn ich auf Sichtbar machen klicke, und dann verschwinden, ist es weg, und taucht auch allein durch zurückblättern nicht mehr auf.

wp_xyz hat geschrieben:Wenn deine Signatur stimmt, hast du einen ziemlich alten Lazarus - ich meine, ich hätte sowas ähnliches schon mal gesehen. Heute kann ich das Verhalten aber weder auf Windows noch auf Linux Mint qt/gtk2 bestätigen. --> Hol dir einen aktuellen Lazarus

Schade das ein Programm schon nach ca. 2-3 Jahre als veraltert gilt. Naja, kommt bald eh vieles neues auf meine Festplatte, auch neues FC und Lazarus. Dann kann ich es selber testen, ob es ... behoben wurde. Obwohl, natürllich, wenn inzwischen (oder gar schon vor 2-3 Jahren) Jemand anders es schon längst aufgefallen ist, kann der Fehler bei der neuen Version längst behoben seni. Manchmal denke ich echt zu .. eingeschränkt.

kralle hat geschrieben:wie wäre es, wenn Du das Memo-Feld nicht schon zur Entwurfszeit erzeugst, sondern erst beim Klick auf dem Button?

Finde ich irgendwie ungewohnt ... unnatürlich. Ich teste es aber jedenfalls.
Lazarus 2.2.0 / FP 3.2.4

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von wp_xyz »

Erwin hat geschrieben:Schade das ein Programm schon nach ca. 2-3 Jahre als veraltert gilt.

Wieso schade? Das zeigt nur, dass Lazarus aktiv entwickelt wird und sich jemand um die Fehler kümmert.

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

wp_xyz hat geschrieben:
Erwin hat geschrieben:Schade das ein Programm schon nach ca. 2-3 Jahre als veraltert gilt.

Wieso schade? Das zeigt nur, dass Lazarus aktiv entwickelt wird und sich jemand um die Fehler kümmert.

Stimmt zwar einerseits, aber andererseits habe ich eher den Eindruck, dass man neben all den Dingen, die eh fast keiner braucht, ausgerchnet dort noch weitere dazu kommen. Während man deshalb weniger Zeit hat, das Ganze stabiler zu machen.

Weiß jetzt wieder, was für ein Problem ich mit der Erstellung während eines Laufendes Programmes habe: Weiß nicht, wie man sowas richtig macht. In all den Büchern, die ich zu Delphi und Co. gelesen habe, wurde so was meines Wissens nicht beschrieben.

Allerdings habe ich dennoch versucht, und dazu ein weiern Button in das TableSheet zu dem Memo gesetzt. Seit dem funktioniert es so, wie es sollte. :?:

Daraufhin habei ch ein weieres Memo in die 2. Seite des PageControlls gesetzt (ebenfalls mit Fals, natürlich). Auch das blieb trotz hin und her blättern der beiden Seiten unsichtbar.

Daraufhin habe ich ein Zweites PageControl gesetzt, 2 TableSheet gemacht. Dort tratt dann wieder der Fehler auf. Komischerweise aber danach dann auch wieder beim ersten PageControll auf der Zweiten Seite. Wärend das Memo auf der Ersten Seite weiterhin unsichtbar blieb.

Das ist die Art Fehler, den ich am meisten hasse, bzw. mir Angst machen. Irgendwo habe ich mal gelesen, dass es was mit der Rundung (?) zu tun haben soll. Es also keine wirkliche 1 in der Maschienensprache geben soll, sondern 0,9999.... weiß nicht mehr, wie viele Stellen er meinte/schrieb.
Jedenfalls hatte ähnlichen Fehler ein anderer Programmier, mit dem ich vor Jahren regen Kontakt hatte. Der hat 2-3 Codezeilen mehr dazu geschrieben, wegen einer Aktion im Spiel. Daraufhin ging eine Aktion an einer ganz anderen Stelle nicht. Die Beiden Teile hatten gar keine Verbindungspunkte.
Oder der in einem Browsergame, wo Schiffe mit 0 Zustand ja kaputt waren, also nicht geben solte. Und auch Jahre lang nicht gab, bis dann doch mal nach 3 Jahren ein Fall auftauchte, also ein Schff mit 0 Zustand.

Ok, wird man vermutlich nicht lösen können, das Problem. Das ist dazu einfach zu sehr von dem Gesamtumständen abhängig. Also wie viele Buttons, oder liegt es an der Anzahl Codezeilen? Oder was weiß ich, woran es liegt. Zu komplex, leider.
Lazarus 2.2.0 / FP 3.2.4

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Michl »

Erwin hat geschrieben:Weiß jetzt wieder, was für ein Problem ich mit der Erstellung während eines Laufendes Programmes habe: Weiß nicht, wie man sowas richtig macht.
Sollte mMn in jedem guten Buch zu finden sein, wie man Controls zur Laufzeit dynamisch erstellt.

Aber mal zusammengefasst kann man das so machen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  MyMemo: TMemo;
begin
  MyMemo := TMemo.Create(Self)// mit Self als Eigner ist die Instanz von TForm1 (zumeist Form1) für das spätere Aufräumen des von MyMemo zuständig
  MyMemo.Left := 50;
  MyMemo.Top := 20;
  MyMemo.Width := 150;
  MyMemo.Height := 100;
  MyMemo.Parent := TabSheet2;  // wichtig ist Parent, worauf soll MyMemo gezeichnet werden
end;


Ansonsten, packe doch mal das Minimalbeispiel (nur die Sourcedateien: *.pas, *.lpi, *.lpr, *.lfm) in ein Zip und lade dies hier hoch. Ich bin mir sicher, dass jemand das Beispiel gegentesten wird und dir gezielter helfen kann.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Danke für das Beispiel. Werde ich bei Gelegenheit testen.

Was das Problem betrifft: Hochladen? Müsste mich da erst mal einarbeiten. Aber vor allem habe ich ja jetzt das Memo auf ein Panel gepackt. Das Panel selbst kann man ja grafisch gar nicht sehen (weil Panel und Memo gleich groß sind). Aber mit dem Panel funktioniert das mit dem visible reibungslos. Ist halt jetzt eine Komponente mehr im Programm. Aber was solls. Die Heutigen Rechner verkraften da zum Glück viel mehr. Das Memo ist auch nur aus ungewollter Platzenge versteckt. Und sind halt Infos drauf, die ich eher selten brauche zum Nachschauen. Worum es mir geht: Wird ganz selten wieder vorkommen, dass ich so was in der Weise brauche/nutzen werde. Somit Rechtfertigt der Zeitaufwand der Fehlersuche dies nicht, finde ich.

Wenn aber Jemand generell daran interessiert ist, dem Fehler auf die Spur zu kommen, kann ich ja mal schauen, wie man so was hochlädt. Oder zur Not den Code kopieren. So groß ist der ja nicht.
Aber da sollte man doch wiederum abwarten, bis ich eine neuere Versieon (vermutich noch Ende des Monats, hoffe ich - ist etwas auch eine Zeitfrage) habe. Könnte mir nämlich bei dem merkwürdigem Fehler sogar vorstellen, dass allein eine Änderung (Weiterentwicklung) des Programms (Lazarus und/oder FP) dieser vielleicht dann gar nicht mehr auftritt.
Soner hatte es ja ohne Erfolg nachgemacht. Und wenn Er nicht die gleiche Version hat wie ich ... .
Lazarus 2.2.0 / FP 3.2.4

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Mir ist inzwischen eine andere Merkwürdigkeit aufgefallen. Und zwar das StringGrid, über dem das Panel ist, schaute meist dann durch. Mittendrin aber nicht mehr, je nach dem, was ich wieder auf dieser TableSheet-Seite getan habe, oder in welchem Zustand ich es compiliert, geladen oder dergleichen habe.
Ich schäme mich schon fast zu fragen, aber ich bin es gewohnt wenn ein Fehler auftritt, dass dieser ... konstanter ist. Und auch sonst habe ich mich daran gewöhnt, dass mein Grafik-Treiber 0,5 bis 1 Sekunde braucht, bis er richtig läuft, so dass ich es nicht mehr als Fehler war nehme. Kann solch merkwürdiges Verhalten auch daher führen, wenn der Grafik-Treiber nicht perfekt läuft, was auf meinen BS nicht auszuschließen ist?
Lazarus 2.2.0 / FP 3.2.4

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Ok, da bin ich wieder mit dem Thread, nach fast ein Monat, aber diesmal mit FCP-Version 3.0.0 (und Lazarus 1.6+dfsg-1)
Auch hier tritt der gleiche Fehler auf. Hinzu kommt, dass bei meinem aktuellem BS keine Grafische Fehler beim Start auftreten. Also hat es mit meinen BS selbst nichts zu tun, sondern liegt scheinbar wirklich am FP?
Lazarus 2.2.0 / FP 3.2.4

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von MacWomble »

Ich glaube nicht, dass es an FP liegt. Mit deinen Angaben ist aber auch nichts weiter anzufangen.
Es wäre sinnvoll zu wissen, welches BS du einsetzt. Ansonsten wie schon oben angeführt: Kleines Testprojekt machen wo dieser Fehler auftritt und die Dateien (nicht die kompilierte Version!) hier gezippt posten. Diese paar Minuten Arbeit sollten es dir schon Wert sein, wenn du Hilfe wünscht.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von Erwin »

Mein BS steht doch in der Info-Zeile/Zitat/oder-wie-auch-immer-dies-hier-heißt: Xubuntu 16.04
Das selbe Problem trat auch bei 14.04 auf, mit FPC 2.6.2 und Lazarus 1.0.10

Das Problem habe ich längst 'gelöst', in dem ich die Memo auf ein Panel gepackt habe. Weil beim Panel tritt der Fehler nicht auf.

Das der Fehler nicht ohne weiteres bei Euch anderen Reproduzierbar ist, ist mir ein Rätsel. Außer das BS ist Win. Dazwischen liegen ja oft Welten. Da hatte ich unter Python erlebt, dass unter Unbuntu die Schriftgrößen-Darstellungen bei der Änderung der Bildschimauflösung gesponnen hat, während unter Win einwandfrei funktionierte.
Und das mit dem paar Minuten ... ich weiß schon seit langem nicht mehr, wie man Dateien hoch lädt. Geht so was überhaupt ohne eine eigene Webseite? Mit paar Minuten ist es jedenfalls nicht getan.
Kann aber extra ein Testprogramm machen, wo nur das wesentlich drin ist, und dessen Inhalt dann hier reinkopieren. Der ist ja dann nicht all zu groß.
Aber mir geht es weniger um die Fehlersuche bei mir, weil da wird es nichts wesentliches zu finden geben. Sondern man bei FPC/Lazarus da mal nachschaut. Aber wenn eh ich wieder der Einzige bin, es also nur darum geht nur mir zu helfen, dann sparen wir uns das. Weil dann ist halt hier und da ein Panel mehr drin. Das geht einfacher und schneller, als wenn ich bei mir alles (digital) zerlege.
Lazarus 2.2.0 / FP 3.2.4

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von MacWomble »

Hallo Erwin,

es geht ja auch darum festzustellen ob dies ein Lazarus-Fehler ist. Deswegen wäre es schon sinnvoll dies zu testen.
Ich habe mal ein kleines Testprogramm gebastelt - bitte teste dies bei dir und gib Bescheid ob es funktioniert.
Dateianhänge
Memotest.zip
(100.73 KiB) 66-mal heruntergeladen
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: [Ist halt so!?] Memo.visible:=False und dennoch Sichtbar

Beitrag von theo »

MacWomble, er hat es aber auf einem PageControl/Tabsheet. Das kann einen Unterschied machen.

Ich kann das Problem allerdings auch dann nicht reproduzieren.

Lazarus 1.7 r52477M FPC 3.0.0 x86_64-linux-gtk 2
openSUSE 13.2 (Harlequin) (x86_64)
gtk2-devel-2.24.28-4.14.1.x86_64

Antworten