Bonjour je realise un client de chat celui ci fonctionne mais j ai un petit soucis qd j essaye de mettre une couleur personnalisable.
J'ai créer un Tframe avec ts les composants necessaires a mon PV (Prive).
Ce Tframe est inclus dynamiquement dans mon Tpagecontrol.
J'ai mis une procedure (code plus bas ) pour ouvrir ces PVs .
Avant la gestion de la couleur je me contenter de cacher le tabsheet du prive lorsque celui ci etait fermer mais l utilisation de la couleur me force a le detruire:
Pagecontrol ownerdraw=true et je reecris dans le canvas le caption de l onglet mais si je cache le tabsheet ca decale tout.

J' ai donc mis sur le bouton de fermeture du PV le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 formchat.PageControlChat.Pages[formchat.PageControlChat.ActivePageIndex].Destroy;
 formchat.PageControlChat.ActivePageIndex:=4;
Ce code me ferme bien le PV mais me genere une erreur 'violation d'acces' meme en essayant de la camoufler avec un try except;
Ici j indique la procedure d'ouverture dynamique car je pense que le probleme peut venir de la :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
 
procedure OuvrirPV(Pseudo,sexe:string; ActivePV: Boolean;nbpv2:integer);
var
  NewPV: TTabSheet;
  NewPVFrame: TFrame1;
begin
  NewPV := TTabSheet.Create(FormChat.PageControlChat);
  NewPV.PageControl := FormChat.PageControlChat;
  NewPv.PageIndex:=nbonglet+nbpv;
  NewPVFrame := TFrame1.Create(NewPV);
  NewPVFrame.Parent := NewPV;
  NewPVFrame.Align := alClient;
  NewPVFrame.EditSaisiePv.Clear;
  NewPVFrame.RxRichEditPv.Clear;
  NewPV.Caption := Pseudo;
  NewPVFrame.groupboxpv.Caption := 'Dialogue en prive avec '+pseudo;
  NewPvFRame.Labelnbpv.Caption:=inttostr(Nbpv2);;
  Setlength(PriveOuvert,Length(PriveOuvert)+1);
  PriveOuvert[Length(PriveOuvert)-1].Nom:=Pseudo;
  PriveOuvert[Length(PriveOuvert)-1].Pointeur:=addr(NewPVFrame.Edittemppv);
  PriveOuvert[Length(PriveOuvert)-1].sexe:=sexe;
  priveouvert[Length(PriveOuvert)-1].posrichpv:=0;
  PriveOuvert[Length(PriveOuvert)-1].Pointeur2:=addr(NewPVFrame.webbrowserpv);
  nbpv:=nbpv+1;
  formconnect.ClientSocket1.Socket.SendText('17'+#09+pseudo+#13#10);
  if ActivePV
  then begin
    FormChat.PageControlChat.ActivePageIndex := NewPV.PageIndex;
    FormChat.PageControlChat.Invalidate;
    exit;
  end else begin
    NewPV.Highlighted := True;
    FormChat.PageControlChat.Invalidate;
    exit;
  end;
end;

Si quelqu un a une idee qui pourrait m aider a avancer ...
Merci


Unformatic