Probleme avec TabbedNotebook [Résolu]

cheragasalhi 35 Messages postés lundi 10 décembre 2007Date d'inscription 17 juin 2009 Dernière intervention - 25 févr. 2008 à 11:46 - Dernière réponse : cheragasalhi 35 Messages postés lundi 10 décembre 2007Date d'inscription 17 juin 2009 Dernière intervention
- 26 févr. 2008 à 23:52
Salut
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:11.25pt;
height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\Salhi\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
o:href="http://www.delphifr.com/imgs2/smile_big.gif"/>
</v:shape><![endif]-->
<!--[if !vml]-->

<!--[endif]-->


mes amis j'ai un problème avec TabbedNotebook:

j'ai créer une application qui fait des traitements sur un texte (Tsynmemo) alors j'ai préférai d'utiliser un
TabbedNotebook au on créer dynamiquement des Tsynmemos suivant le choix de l'utilisateur jusqu'a mtn tous marche
très bien mais le problème est lorsque je veux faire le traitement.



le
traitement ne fais que sur  le premier
Tsynmemo

.

Je pence il faut sélectionner le
Tsynmemo
parant.







Comment faire pour ma fonction
traite le
Tsynmemo




afichier.











Merci
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 26 févr. 2008 à 20:33
3
Merci
Ok, merci pour ces précisions qui nous amènent à ce nouveau code dans lequel il faudra remplacer TMemo par TSynMemo. Je te laisse ce plaisir :

procedure TForm1.Analyse_lexical(var chain: string);
begin
  ShowMessage(chain);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  TabPage: TTabPage;
  i: integer;
begin
  if TabbedNotebook1.Pages.Count < 1 then
    Exit;


  { Recherche, parmi les controles dont TabbedNoteBook1 est le parent,
  des TMemo}
  with TabbedNotebook1 do
  begin
    { Recherche de l'onglet actif
    ...noter l'astuce non documentée par Borland }
    TabPage := TTabPage(Pages.Objects[PageIndex]);


    for i := 0 to TabPage.ControlCount - 1 do
      if (TabPage.Controls[i] is TMemo) then
      begin
        s := TMemo(TabPage.Controls[i]).Text;
        Analyse_lexical(s);
      end;
  end;
end;

May Delphi be with you !
<hr />


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Meilleure réponse
cheragasalhi 35 Messages postés lundi 10 décembre 2007Date d'inscription 17 juin 2009 Dernière intervention - 26 févr. 2008 à 23:52
3
Merci
s'il ya un mot plus segnificartife que merci alors veuillez l'accepter

Merci cheragasalhi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cheragasalhi
cheragasalhi 35 Messages postés lundi 10 décembre 2007Date d'inscription 17 juin 2009 Dernière intervention - 25 févr. 2008 à 12:00
0
Merci
{


une portion de code source pour
la création d'un anglet


}





procedure TForm1.Ovrire1Click(Sender: TObject);


var

i: integer;
SynMemo : TSynMemo;
TabPage : TTabPage;
 //Non documenté dans l'aide de Delphi
begin
//---------------------------------------------------------------------------------//
//-- -----------------------------Ovrire un fichier --------------------------------//
if opendialog1.Execute then
     begin
        ifnot (Uppercase(ExtractFileExt(opendialog1.FileName)) = '.SAL') then exit;
//---------------------------------------------------------------------------------//
with TabbedNoteBook1 do
begin
//La page créée devient la page courante
PageIndex : = Pages.Add(opendialog1.FileName);
TabPage := TTabPage(Pages.Objects[PageIndex]);
synMemo := TSynMemo.Create(Self);
synMemo.Highlighter:=SynUsthbNewCppSyn1;
synMemo.ActiveLineColor:=clAqua;
synMemo.RightEdgeColor:=clRed;
synMemo.Parent := TabPage;
synMemo.Align := alClient;
end;      
      end;
Commenter la réponse de cheragasalhi
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 25 févr. 2008 à 23:28
0
Merci
Si j'ai bien compris la question , la réponse est simple :
comme la fiche Form1 est propriétéaire de tous les composants TSynMemo, fais une boucle parcourant les composants de cette fiche. Si, dans cette boucle, le composant est du type TSynMemo, alors tu appliques le traitement.

exemple classique et basique :
Dans la portée de la fiche :
for i := 0 to ComponentCount - 1 do
    if Components[i] is TSynMemo then
        TSynMemo(Components[i]).LaMéthodeAAppeler;

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
cheragasalhi 35 Messages postés lundi 10 décembre 2007Date d'inscription 17 juin 2009 Dernière intervention - 26 févr. 2008 à 11:10
0
Merci
Salut <!--[if gte vml 1]><v:shapetype id= "_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:11.25pt;
height:11.25pt'>
<v:imagedata src="file:///C:\DOCUME~1\Salhi\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
o:href= "http://www.delphifr.com/imgs2/smile_big.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

merci pour votre réponse, vous avez approché de la réponse mais...

Je  ré explique:




Mon programme c'est un mini compilateur (il sera publier par la suite dans le site)</italique>
l'utilisateur a le droit de créer ou importer des fichiers on met le contenu de
chaque fichier a l'aide un synmemo dans un anglet indipendant (création dynamique des anglets) .

le problème est dans  la fonction analyser (
le traitement ) par se que cette fonction a comme paramètre d'entre STRING
(c'est le texte de synmemo) alors je cherche une manière pour ma fonction reçoit le contenu de
synmemo qui est dans l'anglet active ou afficher par l'utilisateur .(j'arrive pas faire la différance entre les synmemos qui ont
été déjà créer dynamiquement )

le corps de la procédure : procedure
TForm1.Analyse_lexical(<gras>var
chain:string);





l'appel de la procédure:


  procedure TForm1.Button1Click(Sender:
TObject);

                                            
begin

                                                    
Analyse_lexical(synmemo.text);



                                            
end;







je
propose:  
                   
procedure TForm1.Button1Click(Sender: TObject);

                                            
var le_texte string;

                                             
begin

                                               

//le_texte resoit
synmemo.text de l'anglet actif



         
               

le_texte: =??????????;







                                                    
Analyse_lexical(synmemo1.text);
                                            
end;





remarque: merci de votre suivez.
Commenter la réponse de cheragasalhi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.