RetourForum Delphi
Nouveau compte - Se connecter - Perdu votre mot de passe?Recherche: Utilisateur - Message

Index > Forum général > Problème ReadComponentResFileNouveau post - Répondre
Moise
visiteur
Message Problème ReadComponentResFile message: éditerle 01/05/17 à 02h40

salut à tous

1: je crée Dynamiquement un TEdit et un TButton
2: Sous l'évènement OnClick du bouton  ( EDit1.SelectAll-CopyToClipboard)
3: je compile / tout va bien
3: je sauve le tout  (WriteComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),form1);
5: je redémarre mon programme et je récupère mon travail a l'aide de ReadComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),form1);
           
                                            jusqu'ici tout va bien

Mais quand je clique sur le bouton pour copier le contenu de l'Edit dans le presse-papier,ça génère une erreur de violation
j'ai testé avec un TMemo pareil on dirait que les éditeurs perdent leurs activités après la Sauvegarde..je ne sais pas

ça serai sympa de me dire comment remédier a ça Merci 

 

 
                     

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 03/05/17 à 08h58

salut
a quel moment sont réalisés tes create ?
et a quel moment est fait ReadComponentResFile ? est ce que l'un n'écraserait pas l'autre.

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 03/05/17 à 09h01

form1 est créé dynamiquement aussi ?

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 03/05/17 à 14h22


Merci a toi papyvore d'avoir réClin d'oeil langue ondu

et pour être plus explicite rien ne vaut un copier coller

unit UCompoDyn;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
    TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure CreerCompos(Sender: TObject);
    procedure Copier(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);


  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  MonPanel:TPanel;
  MonBouton: Tbutton;
  MonEdit: TEdit;


implementation

{$R *.dfm}
procedure TForm1.CreerCompos(Sender: TObject);
begin
      MonPanel := TPanel.Create(self);
      with MonPanel do
      begin
      MonPanel.Parent := Form1;
      MonPanel.Align := alTop;
      MonPanel.Height := 100;
      end;

      MonBouton:= Tbutton.Create(self);
      with MonBouton do
      begin
      MonBouton.Parent := MonPanel;
      MonBouton.Top := 40;
      MonBouton.Left := 120;
      MonBouton.Caption := 'Copier';
      MonBouton.OnClick := Copier;
      end;

      MonEdit:= TEdit.Create(self);
      with MonEdit do
      begin
      MonEdit.Parent := MonPanel;
      MonEdit.Top := 40;
      MonEdit.Left := 220;
      end;
      end;

procedure TForm1.Copier(Sender: TObject);
begin
    MonEdit.SelectAll;
    MonEdit.CopyToClipboard;
end;


procedure TForm1.FormClick(Sender: TObject);
begin
    CreerCompos(Sender);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
      {je sauvegarde le panel et les compos }
  WriteComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),Form1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin      // a ne pas activer au 1er demarrage car rien n'a ete encore sauvé
//  ReadComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),Form1);
end;
initialization
  RegisterClass(TPanel);
  RegisterClass(TEdit);
  RegisterClass(Tbutton);
end.

  {      1 compiller le programme
        2 cliquer sur la fiche pour créer les compos
        3 écrire quelque chose dans MonEdit
        3 activer ReadComponentResFile(TForm1.FormCreate)
        4 fermer le programme
        5 redémarrer le programme
        6 cliquer sur le bouton copier et c'est là qu'intervient le probleme!! }

[code]

Merci encore

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 03/05/17 à 23h26

salut essais ça chez moi j'ai pas d'erreur
 

code



unit UCompoDyn;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.StdCtrls,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm3 = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure CreerCompos(Sender: TObject);
    procedure Copier(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

var
  MonEdit: TEdit;
  MonBouton: TButton;
  MonPanel: TPanel;

procedure TForm3.Copier(Sender: TObject);
begin
  MonEdit.SelectAll;
  MonEdit.CopyToClipboard;
end;

procedure TForm3.CreerCompos(Sender: TObject);
begin
  MonPanel := tpanel.Create(Form3);
  with MonPanel do
  begin
    Parent  := Form3;
    Align  := alTop;
    Height  := 100;
    Visible := true
  end;

  MonBouton := TButton.Create(MonPanel);
  with MonBouton do
  begin
    Parent  := MonPanel;
    Top    := 40;
    Left    := 120;
    Caption := 'Copier';
    OnClick := Copier;
  end;

  MonEdit := tedit.Create(MonPanel);
  with MonEdit do
  begin
    Parent := MonPanel;
    Top    := 40;
    Left  := 220;
  end;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WriteComponentResFile(ChangeFileExt(Application.ExeName, '.dat'), MonPanel);
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  CreerCompos(Sender);
  if FileExists(ChangeFileExt(Application.ExeName,'.dat')) then
    ReadComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),MonPanel);
end;

initialization

RegisterClasses([TButton, TEdit, TPanel]);

end.

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 01h11

salut papyvore

[/code]

procedure TForm3.FormShow(Sender: TObject);
begin
  CreerCompos(Sender);
  if FileExists(ChangeFileExt(Application.ExeName,'.dat')) then
    ReadComponentResFile(ChangeFileExt(Application.ExeName,'.dat'),MonPanel);
end;
[code]

avec ça vous ne faites que récréer les compos, essayiez de mettre du texte dans (MonEdit) sauvegarder et vous verrez

Merci   

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 08h12

salut
j'ai mis du texte (azerty) dans l'edit et il s'est bien rechargé.
j'ai regardé le .dat  le texte est bien dedans .
a ma connaissance le WriteComponentResFile ne recrée pas les compos mais sauve toutes ses propriétés (je me trompe peut être)
toujours est il que ça marche comme ça chez moi ,est crée une erreur si les compos ne sont pas recrées .




papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 11h19

je te joint le contenu fichier .Dat

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  FF 0A 00 54 50 41 4E 45 4C 00 30 10 2E 02 00 00  ÿ..TPANEL.0.....
00000010  54 50 46 30 06 54 50 61 6E 65 6C 00 04 4C 65 66  TPF0.TPanel..Lef
00000020  74 02 00 03 54 6F 70 02 00 05 57 69 64 74 68 03  t...Top...Width.
00000030  0F 02 06 48 65 69 67 68 74 02 64 05 41 6C 69 67  ...Height.d.Alig
00000040  6E 07 05 61 6C 54 6F 70 08 54 61 62 4F 72 64 65  n..alTop.TabOrde
00000050  72 02 00 00 07 54 42 75 74 74 6F 6E 00 04 4C 65  r....TButton..Le
00000060  66 74 02 78 03 54 6F 70 02 28 05 57 69 64 74 68  ft.x.Top.(.Width
00000070  02 4B 06 48 65 69 67 68 74 02 19 07 43 61 70 74  .K.Height...Capt
00000080  69 6F 6E 06 06 43 6F 70 69 65 72 08 54 61 62 4F  ion..Copier.TabO
00000090  72 64 65 72 02 06 00 00 05 54 45 64 69 74 00 04  rder.....TEdit..
000000A0  4C 65 66 74 03 DC 00 03 54 6F 70 02 28 05 57 69  Left.Ü..Top.(.Wi
000000B0  64 74 68 02 79 06 48 65 69 67 68 74 02 15 08 54  dth.y.Height...T
000000C0  61 62 4F 72 64 65 72 02 07 00 00 07 54 42 75 74  abOrder.....TBut
000000D0  74 6F 6E 00 04 4C 65 66 74 02 78 03 54 6F 70 02  ton..Left.x.Top.
000000E0  28 05 57 69 64 74 68 02 4B 06 48 65 69 67 68 74  (.Width.K.Height
000000F0  02 19 07 43 61 70 74 69 6F 6E 06 06 43 6F 70 69  ...Caption..Copi
00000100  65 72 08 54 61 62 4F 72 64 65 72 02 04 00 00 05  er.TabOrder.....
00000110  54 45 64 69 74 00 04 4C 65 66 74 03 DC 00 03 54  TEdit..Left.Ü..T
00000120  6F 70 02 28 05 57 69 64 74 68 02 79 06 48 65 69  op.(.Width.y.Hei
00000130  67 68 74 02 15 08 54 61 62 4F 72 64 65 72 02 05  ght...TabOrder..
00000140  00 00 07 54 42 75 74 74 6F 6E 00 04 4C 65 66 74  ...TButton..Left
00000150  02 78 03 54 6F 70 02 28 05 57 69 64 74 68 02 4B  .x.Top.(.Width.K
00000160  06 48 65 69 67 68 74 02 19 07 43 61 70 74 69 6F  .Height...Captio
00000170  6E 06 06 43 6F 70 69 65 72 08 54 61 62 4F 72 64  n..Copier.TabOrd
00000180  65 72 02 02 00 00 05 54 45 64 69 74 00 04 4C 65  er.....TEdit..Le
00000190  66 74 03 DC 00 03 54 6F 70 02 28 05 57 69 64 74  ft.Ü..Top.(.Widt
000001A0  68 02 79 06 48 65 69 67 68 74 02 15 08 54 61 62  h.y.Height...Tab
000001B0  4F 72 64 65 72 02 03 00 00 07 54 42 75 74 74 6F  Order.....TButto
000001C0  6E 00 04 4C 65 66 74 02 78 03 54 6F 70 02 28 05  n..Left.x.Top.(.
000001D0  57 69 64 74 68 02 4B 06 48 65 69 67 68 74 02 19  Width.K.Height..
000001E0  07 43 61 70 74 69 6F 6E 06 06 43 6F 70 69 65 72  .Caption..Copier   
000001F0  08 54 61 62 4F 72 64 65 72 02 00 00 00 05 54 45  .TabOrder.....TE
00000200  64 69 74 00 04 4C 65 66 74 03 DC 00 03 54 6F 70  dit..Left.Ü..Top
00000210  02 28 05 57 69 64 74 68 02 79 06 48 65 69 67 68  .(.Width.y.Heigh
00000220  74 02 15 08 54 61 62 4F 72 64 65 72 02 01 04 54  t...TabOrder...T
00000230  65 78 74 06 06 61 7A 65 72 74 79 00 00 00        ext..azerty...      <== ici le contenu du tedit

voilà je ne sais trop quoi dire de plus
si tu as testé le code dis moi si tu as des erreurs et lesqelles ??
quel delphi utilises tu ??

tourlourou
modérateur
2945 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 12h33

Il me semble que l'aide de la fonction va aussi dans le sens de papyvore...

Au passage, s'il ne s'agissait que de conserver des valeurs de Edit.Text à la fermeture/ouverture d'une application, il existe sur le site un TSauvegardeEditIni qui fait ça me semble-t-il.

<<débutant, et pour longtemps...>>

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 15h57


[Bonjour papyvore sincèrement navré pour ce contretemps et je retire ce que j'ai dis que ton code ne fait que recréer les compos.
ton code marche, l'erreur venait du fait que je déclarai mes compos dans les variables globales!!.ce qui fallait pas faire bien sûr
la moitie du problème persiste toujours la procédure copier ne fonctionne pas et là je sèche vraiment

Merci encore a toi papyvore et @tourlourou  pour l'info

Cordialement. ]

Moise

tourlourou
modérateur
2945 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 16h47

Rentre-t-il dans la procédure Copier() au clic ?
MonBouton.OnClick est-il assigné après le ReadComponent ?

<<débutant, et pour longtemps...>>

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 17h13


j'ai pas bien compris ta question tourlourou

Bon quand je clique sur MonBouton rien ne se passe

procedure TForm3.Copier(Sender: TObject);
begin
  MonEdit.SelectAll;
  MonEdit.CopyToClipboard;
end;

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 17h26

bon je reformule ma question

Comment assigner l'événement OnClick de MonBouton après le ReadComponent ?

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 20h14

Mais si on click est bien affecté
1 tu clic
2 tu efface le texte
3 ctrl v (copie)
Et tu verras que ça marche

papyvore
membre
266 messages
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 20h17

Mais si on clics est bien affecté
1 tu clic
2 tu efface le texte
3 ctrl v (copie)
Et tu verras que ça marche

Moise
visiteur
Message Re: Problème ReadComponentResFile message: éditerle 04/05/17 à 20h58


impeccable ça marche Merci ,Merci pour tout

@

Index > Forum général > Problème ReadComponentResFileNouveau post - Répondre
 page 1 sur 1