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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| unit TabContener;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, ComCtrls, SynEdit, Dialogs;
type
{ Notre onglet.
Il est de type TTabContener, descendant de TTabSheet et muni d'une propriété Editor
de type TSynEdit qui va stocké le TSynEdit correspondant. Elle est aussi muni d'une propriété
Data de type TObject pour plus de flexibilité, une propriété Chemin qui stocke le chemin du
fichier et les méthodes d'ouverture/enregistrement.
}
{ Descendant de TTabSheet }
TTabContener = class(ttabsheet)
private
{ Champ permettant de stocker n'importe quel objet }
fData: TObject;
{ Champ qui stocke notre SynEdit }
fEditor: TSynEdit;
{ Champ qui renseigne le chemin d'accès du fichier en cours }
fChemin: TFileName;
{ Méthodes d'accès privées aux propriétés }
function GetData : TObject;
function GetEditor : TSynEdit;
procedure SetData(aValue: TObject);
procedure SetEditor(aValue: TSynEdit);
procedure Nettoyer();
public
constructor Create(AOwner: TComponent); override;
destructor Destroy;
{ Méthodes d'entrées/sorties publiques }
procedure OuvrirFichierDans(pChemin: TFileName);
procedure SauverContenuSous(pChemin: TFileName);
procedure SauverContenu();
property Chemin: TFileName read fChemin write fChemin;
property Data: TObject read GetData write SetData;
property Editor: TSynEdit read GetEditor write SetEditor;
end;
implementation
resourcestring
SFileNotFound = 'Le fichier n''existe pas.';
SDoYouErase = 'Le fichier existe déjà. Voulez-vous l''écraser ?';
function TTabContener.GetData : TObject;
begin
Result := fData;
end;
procedure TTabContener.SetData(aValue: TObject);
begin
if aValue <> fData then
fData := aValue;
end;
function TTabContener.GetEditor: TSynEdit;
begin
Result := fEditor;
end;
procedure TTabContener.SetEditor(aValue: TSynEdit);
begin
if aValue <> fEditor then
fEditor := aValue;
end;
procedure TTabContener.Nettoyer();
begin
fEditor.Lines.Clear;
end;
procedure TTabContener.OuvrirFichierDans(pChemin: TFileName);
begin
Chemin:=pChemin;
Nettoyer();
if FileExists(pChemin) then
Editor.Lines.LoadFromFile(pChemin)
else
Editor.Lines.Add(SFileNotFound);
end;
procedure TTabContener.SauverContenuSous(pChemin: TFileName);
begin
if FileExists(pChemin) then
if MessageDlg(SDoYouErase, mtConfirmation, [mbYES, mbNO], 0) = mrYes then
Editor.Lines.SaveToFile(pChemin);
end;
procedure TTabContener.SauverContenu();
begin
if not FileExists(Chemin) then
SauverContenuSous(Chemin)
else
Editor.Lines.SaveToFile(Chemin);
end;
constructor TTabContener.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fEditor:=TSynEdit.Create(Self);
with fEditor do
begin
Parent:=Self;
Align:=alClient;
end;
end;
destructor TTabContener.Destroy;
begin
FreeAndNil(fData);
fEditor.Free;
end;
end. |
Partager