AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi label.caption & button.enabled werden nicht refreshed.....
Thema durchsuchen
Ansicht
Themen-Optionen

label.caption & button.enabled werden nicht refreshed.....

Ein Thema von hypercoder · begonnen am 24. Sep 2006 · letzter Beitrag vom 25. Sep 2006
Antwort Antwort
hypercoder

Registriert seit: 11. Aug 2006
4 Beiträge
 
#1

label.caption & button.enabled werden nicht refreshed...

  Alt 24. Sep 2006, 09:59
Hallo zusammen....

habe ein richtig 'hardneckiges' & 'ekliges' Problem! Ich hoffe ihr könnt mir helfen und eine
rein verbale Beschreibung reicht aus.....


ich schreibe zur zeit eine application mit vielen Formularen.

ich lasse nur die mainForm (Funktion eines Splashscreen/Intros) automatisch erzeugen.
Alle anderen (8) Formulare werden, nach einer Anzeigedauer der Mainform von 5 sec., stets zur Laufzeit -
je nach Bedarf erzeugt und angezeigt. Das funktioniert mittlerweile auch recht unproblematisch.

Wird nun allerdings dieses Projekt größer und größer - ist folgendes zu beobachten:

bestimmte Eigenschaften lassen sich ohne Fehlermeldung verändern- jedoch wird diese Veränderung nicht durchgeführt:

z.B.: Label.caption oder button.enabled erfährt keine Aktualiserung - es ist so als wäre keine Rechenzeit frei...... der Software schafft es nicht visuelle 'Dinge' zu ändern und führt nur die nicht visuellen Dinge durch.

Es versteht sich von selbst, das ich mit den grundlegenden Funktionen wie .Hide .Show, .Update, Application.ProcessMessages u.s.w. vertraut bin und sie auch in meinen Programmen berücksichtige.

Wenn ich nun einen beliebigen Haltepunkt definiere und die Application wird dadurch angehalten, anschl. mit F9 die Application wieder starte - funktioniert alles prächtig.

Da ich dieses Phenomen schon in verschiedenen Delphi-Versionen (4/2005) erleben musste und es in den verschiedensten (von mir erstellten) Applicationen immer wieder auftrat, gehe ich davon aus das der Fehler bei mir liegt - Ich weiß nur nicht wo.....

Ferndiagnose ist stets sehr sehr schwierig - ich hoffe aber, dass einem anderen Delphi-Programmierer das eben beschiebene völlig bekannt vorkommt und er mit den entsprechenden Tip geben kann.

Vielen Dank
für alle Bemühungen

hypercoder
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#2

Re: label.caption & button.enabled werden nicht refreshe

  Alt 24. Sep 2006, 10:12
Hallo!

Eest einmal herzlich willkommen in der DP!

Ich denke, ohne den Code wird Dir hier keiner weiterhelfen können.

Aus der abstracten Beschreibung ist es mir leider nicht möglich, Dein Problem zu analysieren.

Gib also bitte etwas Beispielcode.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
hypercoder

Registriert seit: 11. Aug 2006
4 Beiträge
 
#3

Re: label.caption & button.enabled werden nicht refreshe

  Alt 24. Sep 2006, 12:13
Ok ich versuche es.... weniger abstract .... mit ein wenig code....

Die Application besteht aus 1 Mainform und 7 zusätzlichen Formularen. Nur die Mainform wird automtisch erzeugt. Alle anderen -> verfügbare Formulare.

Diese Mainform mit der Funktion eines Spalsh-Screens hat einen Timer. Der Timer wird gestartet - ein WAV File asynchron dazu abgespielt. Nach Ablauf des Timers wird Mainform versteckt und abhängig vom Eintrag in einer INi-Datei eines von 2 Formularen (1x Editor und 1x Hauptprogramm) erzeugt und anschl. eine Start-Procedure aufgerufen.

Delphi-Quellcode:
procedure TMainForm.TimerOffTimer(Sender: TObject);
begin
  TimerOff.Enabled := false;


  if flag = 0 then
  begin
    EditorForm := TEditorForm.Create(self);
    Application.ProcessMessages;
    EditorForm.{procedure};
  end
    else
  begin
    HauptProgrammForm := THauptProgrammForm.Create(self);
    Application.ProcessMessages;
    HauptProgrammForm.{procedure};
  end;
Im Editor selbst wird per Button ein weiteres Formular (Zweck:Suchfunktion) erzeugt:

Delphi-Quellcode:
  if SuchForm = nil then { -> wenn es also noch nicht erzeugt wurde}
    begin
      SuchForm := TSuchForm.Create(Application);
      Application.ProcessMessages;
    end
      else
    begin
      SuchForm.Visible := true;
      SuchForm.BringtoFront;
    end;
Auf dieser Form befinden sich u.a. Progressbars, Labels und Buttons - welche sich nicht während der runtime verändern lassen (visuell: d.h. caption wird einem label anders zugewiesen aber nicht auf dem Bildschirm aktualisiert. Übliche Maßnahmen .update .repaint application.processmessages alles schon durch und zu keinem einwandfrei funktionierendem ergebnis gekommen.

Wenn ich allerdings nun im quelltext an einer entsprechenden Stelle einen Breakpoint setze und der Debugger dort reinläuft - ich dann mittels F9 weiter mache - wird alles von nun an sauber refreshed d.h. die Application läuft sauber -> Zeichen Quelltext eigentlich OK??????

Für mich sieht es so aus, als ob duch diese lange Zwangspause meine Form-Objekte überhaupt erst richtig initialisert werden.... also funktionsfähig.... und ich dadurch im weiteren Porgrammverlauf dadurch keinerlei mehr Probleme habe.

Fehlt diese Zwangspause kommt es zu Fehlfunktionen - keine Abstürze oder so , sondern 'nur' das Nicht-Bedienen von bestimmten visuellen Objekten.

Ich schreibe gewöhnlich nur kleinere Programme. Da habe ich keinerlei Schwierigkeiten.

Sobald eine Application etwas größer wird - ist diese Problematik zu beaobachten. Es scheint also daran zu liegen, daß ich irgendwie einen Denkfehler ständig bei steigender Komplexibilität einbringe.

Ich habe stets mit vielen Formularen zu kämpfen gehabt - auch wenn dort nicht viel passierte. Also wenig Runtime Processzeit - mehr Konstruktzeit - wenn ich das mal so sagen darf - verteht mich denn überhaupt jemand

Ich hoffe das nun alles ein wenig verständlicher ist.

Würde mich auf weitere Antworten freuen

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: label.caption & button.enabled werden nicht refreshe

  Alt 24. Sep 2006, 12:43
Hi,

such mal mit Hilfe der Suche nach Hier im Forum suchenSplashscreen , es gibt schon einige Threads wo es genau erklärt wird.

Unter anderem gibts auch ein Tut von sakura . ( http://www.delphipraxis.net/internal...?p=68839#68839 )

Wenn du Delphi-Tags verwendest wird dein Code in der DP formatiert angezeigt.

[.delphi]begin
// to do...
end.[./delphi]

(ohne Punkt)

wird zu:

Delphi-Quellcode:
begin
  // to do...
end.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
hypercoder

Registriert seit: 11. Aug 2006
4 Beiträge
 
#5

Re: label.caption & button.enabled werden nicht refreshe

  Alt 25. Sep 2006, 17:16
Okay - Hab's hingekriegt.....
#############################
#############################


es scheint so, daß meine programmierweise diesen fehler produziert!

wie auch immer.... ich habe nun folgendes festgestellt:

es liegt wohl auch daran, daß ich auf dem entsprechendem Formular dynamisch CustomButtons als dyn. Array anlegen bzw. benutze.
wenn ich die pause per debugger erzwinge - passiert folgendes das formular wird refresh - neu gezeichnet - die buttons lassen sich nun beliebig en oder disablen..... die labels wechseln nun die farbe oder den text so wie ich es will - nichts wird mehr verschluckt. u.s.w.

Lösung:

An passender Stelle erzwinge ich manuell ein Form-Neuaufbau mittels : Form.Refresh;

Das wars!!

Tja.... Ein Progrämmchen zu schreiben - das war nie sonderlich schwer.....
eine Applikation - da sieht es anders aus.

Mit zunehmender Komplexibilität meines 'Werkes' - mit vielfachem -> ach das muß ich noch ändern....
kam es unweigerlich zu solchem Fehlverhalten. Nun - Ja! Einfach nicht aufgeben und hier mal fragen. Hat sich gelohnt. Vielen Dank für die Tipps.
  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 02:19 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