|
begin process at 2008 07 25 03:58:40
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : override et Inherited d' une fonction avec resultat. [ Divers / Aide et documentation ] (MAURICIO)
|
override et Inherited d' une fonction avec resultat.
le 23/04/2008 15:36:52

MAURICIO
|
Salut à tous, je fais le override d' une fonction comme ça dans un des mes compos: protected procedure FontionXYZ: Boolean; override; j' aimerai faire cela :: procedure FontionXYZ: Boolean; begin RESULT := Inherited FontionXYZ; if not RESULT then bla bla bla ...; end; Mais RESULT est toujours à true  même lorsque la fonction originelle renvoie false. Alors vrai bug ou je dois écrire cela d' une autre façon? Pour l'instant j' ai fait un copier coller du code dans la fonction héritée mais ce serait plus correct d' utiliser Inherited ... A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 15:49:56
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 15:58:20

MAURICIO
|
Bem si ça compile ^^ Il s' agit de mon dernier compo posté hier :
protected function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
function TcyDBGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; begin // doesn' t work because returns always true : // RESULT := Inherited DoMouseWheelDown(Shift, MousePos);
RESULT := false;
if Assigned(OnMouseWheelDown) then OnMouseWheelDown(self, Shift, MousePos, RESULT);
if not RESULT // Not handled then cyMouseWheelDown(self, Shift, MousePos, RESULT); end;
A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 16:06:32
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 16:11:53

MAURICIO
|
Au lieu de faire cela: RESULT := false;
if Assigned(OnMouseWheelDown) then OnMouseWheelDown(self, Shift, MousePos, RESULT);
if not RESULT // Not handled then cyMouseWheelDown(self, Shift, MousePos, RESULT);
Je veux faire cela: RESULT := Inherited DoMouseWheelDown(Shift, MousePos);
if not RESULT // Not handled then cyMouseWheelDown(self, Shift, MousePos, RESULT);
Malheureusement RESULT := Inherited DoMouseWheelDown(Shift, MousePos) est toujours true.
A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 16:14:07

MAURICIO
|
La code suivant étant ce qui est dans DoMouseDown originel de TControl:
RESULT := false;
if Assigned(OnMouseWheelDown) then OnMouseWheelDown(self, Shift, MousePos, RESULT);
A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 16:20:53
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 17:13:33

MAURICIO
|
En fait la syntaxe semble bonne! RESULT := Inherited DoMouseWheelDown(Shift, MousePos);
Ça appelle l' événement OnMouseWheelDown (propriété FOnMouseWheelDown, j' ai vu ça avec F7). Mais après ça va faire ce code: function TcyDBGrid.SelectCell(ACol, ARow: Longint): Boolean; begin Result := True; if Assigned(FOnSelectCell) then FOnSelectCell(Self, ACol, ARow, Result); end;
Puis reviens dans ma procedure ... Le fait que SelectCell = true n' a rien à voir avec: Inherited DoMouseWheelDown qui renvoie toujours true non?
D' ailleurs, je viens de voir cela: function TCustomGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; begin Result := inherited DoMouseWheelDown(Shift, MousePos); if not Result then begin if Row < RowCount - 1 then Row := Row + 1; Result := True; end; end;
Je fais comme eux ^^ Alors, une idée?
A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 17:17:53

MAURICIO
|
Réponse acceptée !
Je suis bête: en faisant Inherited DoMouseWheelDown ça appelle celle-ci: function TCustomGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; begin Result := inherited DoMouseWheelDown(Shift, MousePos); if not Result then begin if Row < RowCount - 1 then Row := Row + 1; Result := True; end; end;
et non pas celle-ci: function TControl.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; begin Result := False; if Assigned(FOnMouseWheelDown) then FOnMouseWheelDown(Self, Shift, MousePos, Result); end;
merci Florenth, tu m' as mis sur la voie!
A+
|
|
|
|
Re : override et Inherited d' une fonction avec resultat.
le 23/04/2008 17:50:21
|
Classé sous : fonction, result, override, inherited, fontionxyz
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 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 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|