Autor Beitrag
Kai Heitkamp
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 30.12.02 11:45 
Hallo,

also irgendwie funktioniert das mit der CLX-Komponente nicht ! Mit dem VCL-ListView funktioniert das ohne Probleme ! Wenn ich z.B. dies mache:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomViewControl;
  Item: TCustomViewItem; Canvas: TCanvas; const Rect: TRect;
  State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
begin
  Canvas.Brush.Color := clSilver;
  Canvas.Font.Color := clRed;
  DefaultDraw := True;
end;


...dann passiert gar nichts, die Farben bleiben alle auf Standard !
Mit der VCL-Komponente geht das alles ohne Probleme !

Hat jemand eine Idee woran das liegen könnte ? Ist die CLX buggy oder so ?

Danke und Gruß
Kai
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 02.01.03 00:56 
Zitat:
Ist die CLX buggy oder so ?

Das ist untertrieben. Da hieß es wohl "Das Ding (Kylix) muss so schnell wie möglich raus (released werden), koste es was es wolle."
Die einzige Möglichkeit, die mir einfällt, ist alles selbst zeichnen. Also DefaultDraw auf False und die Canvas einsetzen.

_________________
Ist Zeit wirklich Geld?
mth
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34



BeitragVerfasst: So 05.01.03 04:49 
Titel: Re: Ändern der Item-Farbe in einem CLX-ListView
Zitat:

Hat jemand eine Idee woran das liegen könnte ?


VCL <> CLX. In diesem Fall übernimmst entweder Du das komplette Zeichnen, oder du überlasst es Qt. Beides mischen geht nicht. Falls du nicht selbst zeichnest nimmt Qt die BaseColor aus der aktuellen QColorGroup des ListViews - so wie es in der Dokumentation von Qt steht.

Zitat:

Ist die CLX buggy oder so ?


Nicht mehr so arg :-) Die CLX von Kylix 3 ist brauchbar. Man muß sich immer nur vergegenwärtigen, dass die CLX auf QT aufbaut. Wenn man erstmal mit QT vertraut ist sollte es eigentlich keine allzugroßen Überraschungen geben :-)
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: So 05.01.03 12:25 
Titel: Re: Ändern der Item-Farbe in einem CLX-ListView
mth hat folgendes geschrieben:
Die CLX von Kylix 3 ist brauchbar.

Bis auf den ShowModal Fehler, den sie seit Kylix 1 nicht lösen können. Die Veränderungen daran verhindern immer noch nicht das Problem mit OnCloseQuery. Wieso soll dieses Ereignis erst eintreten, wenn das modale Formular bereits versteckt ist und warum wird das Formular auch versteckt, wenn man in OnClose Action auf caNone setzt?
Ein anderes Beispiel ist TForm.ModalResult. Setzt man ModalResult auf z.B. mrOK und entscheidet, dass ModalResult doch auf mrNone stehen bleiben soll (das Fenster also nicht schließen), dann wird das Formular trotzdem geschlossen.
Und hast du schon mal im OnClick Ereignis einer TRadioGroup den ItemIndex des RadioGroup geändert? Viel Spaß bei der Rekursion.


"Die CLX von Kylix 3 ist brauchbar.", wenn man sie noch entsprechend patched.

_________________
Ist Zeit wirklich Geld?
Kai Heitkamp Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: So 05.01.03 12:52 
Titel: Re: Ändern der Item-Farbe in einem CLX-ListView
mth hat folgendes geschrieben:

VCL <> CLX. In diesem Fall übernimmst entweder Du das komplette Zeichnen, oder du überlasst es Qt. Beides mischen geht nicht. Falls du nicht selbst zeichnest nimmt Qt die BaseColor aus der aktuellen QColorGroup des ListViews - so wie es in der Dokumentation von Qt steht.

(...)

Wenn man erstmal mit QT vertraut ist sollte es eigentlich keine allzugroßen Überraschungen geben :-)


Ups, nee is klar ! Ich kenne QT (seit 1.4) und es steht in der Doku ! Habe schon lange nicht mehr unter Linux gecoded ! Danke für den Tipp !

Was für eine Version benutzt Kylix3 von Qt ? Ich glaube, es ist 2.3.1 !?

Kai
mth
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34



BeitragVerfasst: So 05.01.03 15:28 
Titel: Re: Ändern der Item-Farbe in einem CLX-ListView
AndyB hat folgendes geschrieben:

Bis auf den ShowModal Fehler, den sie seit Kylix 1 nicht lösen können. Die Veränderungen daran verhindern immer noch nicht das Problem mit OnCloseQuery.


Es war schon schlimmer :) Ich hab über Kylix 3 mal die ShowModal Probleme in den Borland Newsgroups gepostet und die entsprechenden Fixes, soweit ich sie gebraucht habe. Neben den modalen Dialogen, die sich gelegentlich ungewohnt bis seltsam verhalten, sind die MDI Formulare das zweite große Sammelsorium von Ungewöhnlichkeiten :)

AndyB hat folgendes geschrieben:

Wieso soll dieses Ereignis erst eintreten, wenn das modale Formular bereits versteckt ist und warum wird das Formular auch versteckt, wenn man in OnClose Action auf caNone setzt?


Das ist so nicht ganz richtig. Das beschriebene Problem tritt nur im zusammenhang mit dem weiter unten beschirbenen ModalResult Problem auf. Ein "normales" Close kann abgefangen werden (in Kylix 3, in Kylix 2 bestand auch hier ein Problem iirc)!

AndyB hat folgendes geschrieben:

Ein anderes Beispiel ist TForm.ModalResult. Setzt man ModalResult auf z.B. mrOK und entscheidet, dass ModalResult doch auf mrNone stehen bleiben soll (das Fenster also nicht schließen), dann wird das Formular trotzdem geschlossen.


Das ist kein anderes Beispiel, sondern die Mutter des Übels, das du weiter oben beschrieben hast. Das letztere Verhalten erschien mir auch etwas seltsam, ist aber genau so dokumentiert :)

Das OnCloseQuery in diesem Fall befragt werden sollte ist imo ein Bug. OnCloseQuery gehört selbstverständlich aufgerufen und lässt sich auch liesse sich auch leicht in die Funktion integrieren.
mth
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34



BeitragVerfasst: So 05.01.03 15:32 
Titel: Re: Ändern der Item-Farbe in einem CLX-ListView
Kai Heitkamp hat folgendes geschrieben:

Was für eine Version benutzt Kylix3 von Qt ? Ich glaube, es ist 2.3.1 !?


Kylix 3 (und K2) kommen mit einer gepatchten 2.3.0 - man kann aber auch auf die normale 2.3.0 umschalten, die Kylix 3 beiliegt.
rldrkmn
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 07.01.03 13:08 
Hallo mth !

mth hat folgendes geschrieben:

VCL <> CLX. In diesem Fall übernimmst entweder Du das komplette Zeichnen, oder du überlasst es Qt. Beides mischen geht nicht. Falls du nicht selbst zeichnest nimmt Qt die BaseColor aus der aktuellen QColorGroup des ListViews - so wie es in der Dokumentation von Qt steht.


Wenn ich jetzt zeichnen will, was muß ich da genau machen ? Hast Du mal ein (Code-) Beispiel für mich !?

Danke
Chris
Kai Heitkamp Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 07.01.03 21:36 
Hallo,

versuch' mal das:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
//
// Draw Items
//
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomViewControl;
  Item: TCustomViewItem; Canvas: TCanvas; const Rect: TRect;
  State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
begin
  DefaultDraw := False;

  Canvas.Brush.Color := clWhite
  Canvas.FillRect(Rect);

  Canvas.Font.Color := clBlack;
  Canvas.TextOut(1, 1, ListView1.Items[ListView1.Items.IndexOf(Item)].Caption);
end;

//
// Draw SubItems
//
procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomViewControl;
  Item: TCustomViewItem; SubItem: Integer; Canvas: TCanvas;
  const Rect: TRect; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
begin
  DefaultDraw := False;

  Canvas.Brush.Color := clWhite
  Canvas.FillRect(Rect);

  Canvas.Font.Color := clBlack;
  Canvas.TextOut(1, 1, ListView1.Items[ListView1.Items.IndexOf(Item)].SubItems[SubItem - 1]);
end;


So kannst Du alles selber zeichnen und auch die Brush- und Text-Farben einzeln bestimmen !

Gruß
Kai
rldrkmn
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 08.01.03 09:45 
Hallo Kai,

cool ... das funzt ! :D

Danke !!! :D
Chris