AGB  ·  Datenschutz  ·  Impressum  







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

Tedit disabled

Ein Thema von ketraun · begonnen am 12. Aug 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Seite 3 von 3     123   
ketraun
(Gast)

n/a Beiträge
 
#21

Re: Tedit disabled

  Alt 13. Aug 2003, 18:34
hi,
ich versteh dich. Du sollst ja auch keinen Code rausrücken. Code ist pures Geld. Ich mach das seit 25 Jahren und weiss von was ich rede.

Ich komm bloss nicht dahinter was bei mir schief läuft. Das ärgert und wurmt mich so, dass ich doch weiter bohre.

Vielleicht kommt dir doch noch die grosse Erkenntnis! Ich kanns für Heute jedenfalls nicht mehr sehen.

ketraun
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#22

Re: Tedit disabled

  Alt 13. Aug 2003, 18:48
Änders du den Font bei dem Edit-Control.

Noch ne andere Idee ich werde es mal versuchen über
CN_CTLCOLOREDIT (bzw. WN_CTLCOLOREDIT)
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#23

Re: Tedit disabled

  Alt 14. Aug 2003, 08:12
hi,
nein hab den Font nicht geändert, alles schon probiert.
ketraun
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#24

Re: Tedit disabled

  Alt 14. Aug 2003, 10:07
hi,
du hast, darauf könnte ich meinen Kopf verwetten, irgendwo die invalidate Methode von Tcontrol überschrieben!
Soweit konnte ich das zurückverfolgen.
Ich hab jetzt eine eigene Methode für invalidate eingeführt. Jetzt gehts, nur ist das editfeld nicht mehr zu disablen.
Die Farbe ändert sich. Ist doch schon was.
ketraun
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#25

Re: Tedit disabled

  Alt 14. Aug 2003, 10:09
Ich mal ganz anderen Weg!

Das was du möchtest macht Windows schon als Standard!
Will man das beeinflussen muss man
(WM_)CN_CTLCOLOREDIT Wenn Normal
und
CN_CTLCOLORSTATIC wenn Disabled oder ReadOnly
abfangen.

So hab ich es bei mir abgeändert...

Delphi-Quellcode:
  private
    procedure CNCtlColorStatic(var Message : TWMCtlColor); message CN_CTLCOLORSTATIC;

procedure TPWEdit.CNCtlColorStatic(var Message: TWMCtlColor);
begin
  inherited; // mache Standard
  with Message do
    // für deinen Fall Enabled prüfen
    // und mittels SetTextColor den Farbwert ändern
    // wie gesagt das ist Windows-Standard
    if ReadOnly and (Parent <> nil) then
       begin
         Result := Parent.Brush.Handle;
         SetBkColor(ChildDC, ColorToRGB(Parent.Brush.Color));
       end;
end;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#26

Re: Tedit disabled

  Alt 14. Aug 2003, 10:38
hi,
komm lass gut sein. Ich dank dir für deine Mühe. ( der neueste Versuch klappt bei mir auch nicht )
Ich geh jetzt meinen Weg über Invalidate und ich bin überzeugt das geht.
Ich will dir nicht zu nahe treten, aber ich glaube, dass, das nur Zufall ist, dass das bei dir funktioniert.

Meine Kollegen sind jetzt an dem Problem dran:
Winnt, Win2000,
Delphi 2,5,6,7 überall funktionierts so nicht.

Und das liegt einfach nur daran, dass:
setenabled ( inherited ) sich selbst aufruft, dadurch wird invalidate aufgerufen und dann ist alles vorbei.
Invalidate setzt die Farbe auf grau. Es nützt nichts dann die Farben zu ändern. Alle die anderen Versuche gehen an dem Problem vorbei und beheben es nicht.
Es ist nötig Invalidate oder eine Routine, die durch diese aufgerufen wird zu überschreiben.
Ein Szenario wäre ( warum das bei dir geht ):
setenabled --> inherited --> Botschalt wird abgeschickt und damit vergeht soviel Zeit ( bei dir ) dass if enabled... abgearbeitet werden kann, bevor die message bearbeitet ist.

inherited;
if enabled then
Font.Color := clWindowText
else
Font.Color := clred;

Also, sei mir nicht böse für die Antwort, aber es lohnt sich nicht noch mehr Energie da reínzustecken.
Was mich noch interressieren würde, was für ein Betriebssystem benutzt du?

Nebenbei: das ist nicht das erste Mal dass ich solches Verhalten auf einem Rechner beobachte!
ketraun
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#27

Re: Tedit disabled

  Alt 14. Aug 2003, 10:48
Delphi-Quellcode:
inherited;
if enabled then
Font.Color := clWindowText
else
Font.Color := clred;
Das hab ich schon längst entfernt, weil da hast du recht, es ist unsicher (del SetEnabled()). Die Letzte Variante klappt bei mir zu Hause (WinXP, D7 A) in der Firma (Win2k, D7 A) und sogar in anderen Programmiersprachen (Win2k, VO). Keine Ahnung warum es nicht geht WM_CTLCOLORSTATIC eigentlich vor dem Zeichnen gerufen wird.

Letzte Möglichkeit ist die Kontrolle der Windows-Farben!

Aber ich lass es jetzt auch gut sein.

Und noch mal danke das du mich auf das CN_CTLCOLORSTATIC gebracht hast (laut MSDN einzig ware weg). Gelichzeitig hab ich letzte Nacht ein wenig mehr ausgetauscht.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#28

Re: Tedit disabled

  Alt 14. Aug 2003, 11:10
hi,
genau da liegt das Problem:
WM_CTLCOLORSTATIC wird vor dem Zeichnen abgesetzt.
Bei Delphi (Tcontrol ) zeichnet aber invalidate ( oder löst es aus )
Das macht deine ganzen Einstellungen wieder futsch.
Und da kommt auch die Zeit ins Spiel. Wir haben unter VB Situationen in denen sich der Code selbst überholt.
Auf dieser Basis kann ich aber nicht programmieren. Unsere Tools müssen für alle MS Betriebssysteme geeignet sein und auch mit dem lahmsten Rechner laufen.
ketraun

PS: ich lass dich die Lösung wissen, wenn ich sie gefunden habe. Bin ganz nah dran.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 18:44 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