AGB  ·  Datenschutz  ·  Impressum  







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

Komponente will sich nicht neu zeichnen

Ein Thema von phlux · begonnen am 14. Mai 2003 · letzter Beitrag vom 15. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Komponente will sich nicht neu zeichnen

  Alt 14. Mai 2003, 21:04
Hi
Folgendes Problem, ich hab jetzt ne Kompo geschrieben, die durch die Property Items: TStrings verschiedene Buttons anzeigt. Wenn ich jetzt im OI die Items ändere werden die Korrekte anzahl von buttons angezeigt, sobald ich jetzt jedoch mit
TControlTab.Items.Add('Eintrag'); während der laufzeit einen neuen Button hinzufügen will, wird dieser erst angezeigt wenn ich die Form vergrößer. Jedoch sollte die Kompo beim resizen der form und beim hinzufügen neuer Items sich neuzeichnen

Ich poste mal den Code: (Biete ihn doch zum DL an)

Sorry, für die vielen kommentierten Programmzeilen, aba so läuft die kompo!!
Angehängte Dateien
Dateityp: pas controltabs.pas (8,1 KB, 9x aufgerufen)
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 14. Mai 2003, 21:18
Hallo,

vielleicht tut es ein Repaint bei SetItems,
leider habe ich jetzt keinen Code mehr vor augen, da Du gerade Dein posting umgestellt hast
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 14. Mai 2003, 21:20
Hi APP!
Die Mods meinten ich sollte es umstellen
Ich probiere es mal mit Repaint.

Edit: nein funzt leider nicht
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 14. Mai 2003, 21:45
Hallo,

Delphi-Quellcode:
PROCEDURE TControlTabs.SetItems(CONST Value: TStrings);
BEGIN
   FItems.Assign(Value);
   SetLength(FButtons, FItems.Count);
   INHERITED Paint; // <-- JETZT FUNKTS LEIDER NICHT
   Invalidate;
END;
[EDIT] SORRY, zu Früh gefreut [/EDIT]
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#5
  Alt 14. Mai 2003, 21:50
hmm, hast du noch etwas verändert?? also bei klappts nämlich immer noch nicht.
edit: *lol* ich habs auch grad gemerkt!
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 14. Mai 2003, 21:59
Sorry, mir fällt im Moment auch nix mehr ein (war ein langer Tag),
aber es dürft wohl nur eine Kleinigkeit sein, da z.B.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ControlTabs1.Items.Add('Test');
  ControlTabs1.Repaint;
end;
funktioniert.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#7
  Alt 14. Mai 2003, 22:12
Ja das es mit Repaint als nachträglicher Aufruf funktioniert, hab ich auch herausgefunden. Ich seh auch wahrscheinlich den Wald vor lauter Bäumen nicht mehr (ich saß den ganzen Tag schon davor ). Falls dir noch etwas einfällt, schreibs mir
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#8
  Alt 15. Mai 2003, 08:54
Probier mal statt "inherited Paint" nur "Paint"...
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#9
  Alt 15. Mai 2003, 10:13
Guten Morgen Motzi!
Ich habe es jetztn so geschrieben:
Delphi-Quellcode:
procedure TControlTabs.SetItems(const Value: TStrings);
begin
  FItems.Assign(Value);
  SetLength(FButtons, FItems.Count);
  Paint;
end;
Leider kommt da wieder nichts bei rum
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#10
  Alt 15. Mai 2003, 10:33
Hallo, ich habe heut leider nicht viel Zeit aber folgendes ist mit noch aufgefallen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ControlTabs1.Items.Add('Test');
end;
ruft in der Unit Classes

Delphi-Quellcode:
function TStrings.Add(const S: string): Integer;
begin
  Result := GetCount;
  Insert(Result, S);
end;
auf und nicht Deine Paintmethode, daher kommt es auch zu keinem Neuzeichnen der Controls.

Die Methode SetItems wird nicht durchlaufen, das kannst Du ganz leicht überprüfen:

einbinden von:
uses Dialogs;
Delphi-Quellcode:
PROCEDURE TControlTabs.SetItems(CONST Value: TStrings);
BEGIN
  FItems.Assign(Value);
  SetLength(FButtons, FItems.Count);
  ShowMessage(Value.Text); <---- Sollte angezeit werden, tut es aber nicht!
  invalidate;
END;
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:32 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