maison
Top.Mail.Ru Yandeks.Metrika
Forum: "Main";
Archive actuelle: 2002.04.01;
Télécharger: [xml.tar.bz2];

vers le bas

Le problème avec la case à cocher intégrée TStringGrid! Trouver des branches similaires


kolobok   (2002-03-21 12:33) [0]

Peut-être que quelqu'un va m'aider? J'ai un problème comme ça:
Je veux que le composant TStringGrid dans la troisième colonne contienne "s CheckBox"
afin d'activer / désactiver l'action décrite dans la ligne.
Le problème consiste spécifiquement dans ce qui suit:
// Créer par programme une TCheckBox
cbOne: = TCheckBox.Create (StringGrid1);
// déclare le parent de CheckBox "a
cbOne.Parent: = StringGrid1;
// dans le coin supérieur gauche, il est apparu.
// Si vous cliquez maintenant dessus, alors il n'y a pas de réaction
// Si vous déclarez le parent Form1 ou Button1 - pas de problème
// J'ai essayé de changer Coché dans le gestionnaire OnClick, obtenu une boucle infinie
// Apparemment, un changement d'état programmatique déclenche l'événement Click-> OnClick et plus ...
// J'ai été un peu trompé et j'ai commencé à gérer l'événement OnMouseDown pour StringGrid1
// Dans ce gestionnaire, les coordonnées de la cellule sont calculées à l'aide des coordonnées de la souris et
// la condition est vérifiée (la cellule dans laquelle CheckBox est assis ou non), si elle
// alors:
cbOne.Checked: = pas cbOne.Checked;
// Ne fonctionne que si vous frappez une cellule. Vous entrez dans CheckBox - pas de réaction.

Bien sûr, vous pouvez vous adapter, mais vous voulez que tout fonctionne comme il se doit!
Et encore une chose: est-ce que quelqu'un a un bon exemple de la façon de créer un contrôle similaire dans le composant, comme des boutons, des commutateurs, des commutateurs, etc.
Je vous serais reconnaissant si vous envoyez du savon kolobok11@hotbox.ru



Song   (2002-03-21 12:49) [1]

Peut-être qu'il a activé négativement? Ou forcez-vous à forcer ..



kolobok   (2002-03-21 13:04) [2]

Activé, c'est bien. Je dis que c’est seulement un parent qui déclare un formulaire ou un bouton et que tout fonctionne.

Cordialement pour la chanson.



Song   (2002-03-21 13:10) [3]

attends, je vais essayer moi-même



kolobok   (2002-03-21 13:19) [4]

Essayez la chanson. Je vois sur le forum que vous êtes compétent dans ce domaine, vous pouvez certainement aider. Merci d'avance.

kolobok11@hotbox.ru



MBo   (2002-03-21 13:21) [5]

procedure TForm1.FormCreate (Sender: TObject);
var cb: TCheckBox;
i: entier
commencer
pour i: = 1 à SG1.RowCount-1 commence
cb: = TCheckBox.Create (auto);
cb.Parent: = self;
cb.width: = 12;
cb.tag: = I;
cb.Caption: = "";
cb.color: = SG1.Color;
cb.Visible: = (i dans [SG1.TopRow..SG1.TopRow + SG1.VisibleRowCount-1]);
cb.onClick: = CheckBox1Click;
SG1.Cols [3] .Objects [i]: = cb;
fin;
fin;

procédure TForm1.CheckBox1Click (Sender: TObject);
commencer
si TCheckBox (Sender). Vérifié alors
Sg1.Cells [3, TCheckBox (Sender) .Tag]: = "Ku-Ku"
d'autre
Sg1.Cells [3, TCheckBox (Sender) .Tag]: = "Chut ...";
fin;

procedure TForm1.SG1DrawCell (Expéditeur: TObject; ACol, ARow: Integer;
Rect: TRect; Etat: TGridDrawState);
commencer
si (ACol = 3) et (ARow> 0) commencent alors
TCheckBox (SG1.Cols [3] .Objects [ARow]). Début: = SG1.top + Rect.Top + 5;
TCheckBox (SG1.Cols [3] .Objects [Flèche]). Gauche: = SG1.left + Rect.right-12;
fin;
fin;

procedure TForm1.SG1TopLeftChanged (Sender: TObject);
var i: entier;
commencer
pour i: = 1 à SG1.RowCount-1 do
TCheckBox (SG1.Cols [3] .Objects [i]). Visible: =
(SG1.LeftCol <= 3) et (i dans [SG1.TopRow..SG1.TopRow + SG1.VisibleRowCount-1]);
fin;



Song   (2002-03-21 13:26) [6]

Cela ne fonctionne pas car le focus d'entrée n'est pas transmis à la TCheckBox. TStringGrid - le composant lui-même est composite, la restriction est plus probablement liée à cela. Si seulement le parent doit le faire sur Form1 ou sur Self (ce sera la même chose dans ce cas). Et assignez vous-même les coordonnées à la case à cocher.



Song   (2002-03-21 13:27) [7]

Oh, oh :)) Je regarde MBo tu as déjà aidé. :)) Invite, comme toujours. : o



kolobok   (2002-03-21 14:26) [8]

Merci MVO pour la décision, mais comme je ne peux pas comprendre cela pour le moment, je vous demande d’expliquer brièvement ce qui se passe.

Cordialement, Kolobok.



MBo   (2002-03-21 14:41) [9]

lorsqu’une case à cocher est créée, un formulaire est attribué au parent et, comme il est apparu plus tard, il est dessiné au-dessus. Dans d'autres cas, vous pouvez faire BringToFront.
la case à cocher créée est entrée dans la liste Objets de la colonne (cela est possible dans une colonne distincte, mais celle-ci existe déjà) (colonnes de type TStrings), numéro de ligne de balise. OnClick est partagé.

Avec le dessin, la visibilité et l'élaboration d'un clic sont claires ou explicites?



kolobok   (2002-03-21 14:58) [10]

MVO, mieux expliquer brièvement. Je dis - je suis MOINS!
Et toi, je vois, MASTAK! Je vais réfléchir pendant quelques jours et le résoudre, la science sera pour moi. Et à propos de vous dans le programme d’aide, je mentionnerai - si je le termine.

Cordialement, Kolobok.



MBo   (2002-03-21 15:13) [11]

cliquez sur cast pour que Sender saisisse TCheckBox (en général, si un événement peut être déclenché par un objet d'un autre type, vous devez vérifier si Sender est TCheckBox) pour utiliser les propriétés de case à cocher

dessin - si la colonne est nécessaire, à partir des coordonnées de la cellule (dans la grille), nous trouvons la position de la case à cocher. Ajouter des coordonnées. grille, puisque la position de la case à cocher est donnée rel. parent - forme.

visibilité - si la cellule est visible, alors checkBox.
Pour une colonne, vous pouvez faire, comme pour une série, (avec une sous-gamme) s’ils peuvent être larges et que seul 2 n’est pas corrigé. sont placés.

Vous demandez précisément ce qui n’est pas clair.



kolobok   (2002-03-21 15:35) [12]

Merci MVO!
Maintenant, j'ai compris, avec votre aide, bien sûr.
Tu ne sais pas existe Delphi 6.0 rus ou pas?

Kolobok.



MBo   (2002-03-21 15:49) [13]

il n'y a pas de D Russes. Il reste des russifications qui
les fenêtres de débogage se traduisent par Watch



Pages: 1 branche entière

Forum: "Main";
Archive actuelle: 2002.04.01;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.6 MB
Heure: 0.024 c
4-360
sdn
2002-02-01 19:15
2002.04.01
Comment créer un formulaire similaire à ICQ


1-169
KB
2002-03-19 13:45
2002.04.01
StringGrid


7-321
Aleksandr
2001-12-28 11:08
2002.04.01
Comment savoir si une police de caractères petite ou grande est installée sur le système?


14-306
Viktor Scherbakov
2002-02-19 09:40
2002.04.01
Zone de polygone


1-86
d_oleg
2002-03-21 09:30
2002.04.01
Dll Bitmap





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol