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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall jStringGrid::DeleteRow(int ARow)
{
TCustomGrid::DeleteRow(ARow);
}
//------------
void __fastcall jStringGrid::DeleteColumn(int ACol)
{
TCustomGrid::DeleteColumn(ACol);
}
//------------
void __fastcall jStringGrid::InsertRow(int ARow)
{
RowCount++;
TCustomGrid::MoveRow(RowCount-1, ARow);
}
//------------
void __fastcall jStringGrid::InsertColumn(int ACol)
{
ColCount++;
TCustomGrid::MoveColumn(ColCount-1, ACol);
}
//------------
void __fastcall jStringGrid::MoveColumn(int FromIndex, int ToIndex)
{
TCustomGrid::MoveColumn(FromIndex, ToIndex);
}
//------------
void __fastcall jStringGrid::MoveRow(int FromIndex, int ToIndex)
{
TCustomGrid::MoveRow(FromIndex, ToIndex);
}
/*
Salut !
Globalement, using, dans cette classe, ne donne rien chez moi (BCB3 Pro).
Donc je reprends l'idée du transtypage sur une classe dérivée.
Depuis une classe dérivée, j'ai accès à toutes les méthodes membres.
Pour ce type d'opération, cette classe n'a besoin ni de constructeur ni de destructeur.
J'ai rajouté deux méthodes pour insérer une ligne et une colonne qui n'existent pas chez moi (donc au cas où ...)!
class jStringGrid : public TStringGrid
{
public :
// Les méthodes que je souhaite rendre publiques
// surchargent les méthodes existantes (celles de TCustomGrid)
void __fastcall DeleteRow(int ARow);
void __fastcall DeleteColumn(int ACol);
void __fastcall InsertRow(int ARow);
void __fastcall InsertColumn(int ACol);
void __fastcall MoveColumn(int FromIndex, int ToIndex);
void __fastcall MoveRow(int FromIndex, int ToIndex);
// Et dans l'implémentation des ces méthodes
// Je ferai appel aux méthodes héritées de TCustomGrid
};
void __fastcall jStringGrid::DeleteRow(int ARow)
{
TCustomGrid::DeleteRow(ARow);
}
//------------
void __fastcall jStringGrid::DeleteColumn(int ACol)
{
TCustomGrid::DeleteColumn(ACol);
}
//------------
void __fastcall jStringGrid::InsertRow(int ARow)
{
RowCount++;
TCustomGrid::MoveRow(RowCount-1, ARow);
}
//------------
void __fastcall jStringGrid::InsertColumn(int ACol)
{
ColCount++;
TCustomGrid::MoveColumn(ColCount-1, ACol);
}
//------------
void __fastcall jStringGrid::MoveColumn(int FromIndex, int ToIndex)
{
TCustomGrid::MoveColumn(FromIndex, ToIndex);
}
//------------
void __fastcall jStringGrid::MoveRow(int FromIndex, int ToIndex)
{
TCustomGrid::MoveRow(FromIndex, ToIndex);
}
Il est clair que cette façon de faire n'est pas très pratique à cause du transtypage qu'il faut sans cesse rédiger.
Code :
( (jStringGrid*) StringGrid1 )->InsertRow(2);A mon avis, le mieux est d'en faire un composant pour les utilisateurs non familiarisés avec la conception et ma foi ... pour les autres aussi !
Il leur sera plus facile de rédiger, sans avoir à comprendre ce que l'on y fait :
Code :
MyStringGrid1->InsertRow(2);J'espère que ça va faire ton bonheur !
A plus !
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->InsertRow(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->InsertColumn(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->DeleteRow(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->DeleteColumn(2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->MoveRow(2, 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
( (jStringGrid*) StringGrid1 )->MoveColumn(2, 1);
}
//--------------------------------------------------------------------------- |
Partager