IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Comment rendre la main au programme?


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut Comment rendre la main au programme?
    Bonjour.

    Je vous explique mon soucis...

    J'ai récupéré sur le web un bout de code qui permet de générer une matrice (a la maniere du film) mais lorsque je lance ce code je n'ai plus la main pour faire d'autre opération...

    Comment faire pour rendre la main au logiciel tout en continuant a faire touner ma matrice?? (j'ai entendu parler de thread mais je trouve ca pas tres clair si quelqu'un peu m'eclaircir)

    merci d'avance
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Les threads permettent de lancer plusieurs traitements en parallèles.

    Dans ton cas, ce qu'il se passe peut-être, c'est que ton traitemenet prend tellement de ressources, qu'il ne réagit plus aux évenement (click sur bouton par exemple).

    Ce que tu peux faire, c'est a la fin d'un tour de boucle (plus le tour sera élémentaire, plus ca risque de ralentir l'ensemble de ton traitement), tu peux essayer de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ProcessMessages
    ceci permet de traiter la file d'attente des évenements Windows, avant d'entamer ton second tour.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    TicTacToc a ecris:
    tu peux essayer de faire un:
    Application.ProcessMessages
    J'avais deja essayé mais ca ne marche pas
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    si ca ne te gêne pas, fais voir le code, on pourra t'aider plus facilement

  5. #5
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    ok voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
      procedure TForm1.FormPaint(Sender: TObject); 
    var x,y,r,l:integer; 
    begin 
    randomize; 
    canvas.Font.Name:='Verdana'; 
    canvas.Font.Style:=[fsBold]; 
    for r:=1 to 400 do 
            begin 
            x:=random(20); 
            for y:=1 to random(20) do 
                    begin 
                    sleep(1); 
                    canvas.Font.Color:=RGB(0,MulDiv(y,255,20),0); 
                    canvas.TextOut(x*15,y*15,chr(random(65)+65)); 
                    l:=y; 
                    end; 
                    canvas.Font.Color:=clWhite; 
                    canvas.TextOut(x*15,l*15,chr(random(65)+65)); 
            end; 
    end;
    voila....
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  6. #6
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Ah ben si le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Application.ProcessMessages
    marche c'est simplement que je l'avais pas mis dans le for (pfffff)

    mais puisque vous avez le code a quel endrois je peux préciser les caractere a générer ( par exemple que les lettres 'D''E''E''L''P''H''I')...
    C'est dans le random????
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  7. #7
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    monsieur est servi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    procedure TForm1.FormPaint(Sender: TObject);
    var
    	x,y,r,l:integer;
    const
      caracteres: array [0..5] of char = ('D', 'E', 'L', 'P', 'H', 'I');
    begin
    	randomize;
    	canvas.Font.Name:='Verdana';
    	canvas.Font.Style:=[fsBold];
    	for r:=1 to 400 do
        begin
        x:=random(20);
        Application.ProcessMessages();
        for y:=1 to random(20) do
          begin
          sleep(1);
          canvas.Font.Color:=RGB(0,MulDiv(y,255,20),0);
          //canvas.TextOut(x*15,y*15,chr(random(65)+65));
          canvas.TextOut(x*15,y*15,caracteres[random(6)]);
          l:=y;
          end;
          canvas.Font.Color:=clWhite;
          //canvas.TextOut(x*15,l*15,chr(random(65)+65));
          canvas.TextOut(x*15,l*15,caracteres[random(6)]);
        end;
    end;

Discussions similaires

  1. Réponses: 15
    Dernier message: 30/05/2009, 13h53
  2. Comment rendre les programmes compatibles sur Vista ?
    Par wa3dbk dans le forum Windows Vista
    Réponses: 1
    Dernier message: 06/10/2007, 16h58
  3. comment rendre la main au system d'exploitation?
    Par Mickey.jet dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/07/2007, 16h02
  4. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 01h40
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo