Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Delphi Tbutton doppio caption

    Salve mi chiedevo se qualcuno saprebbe indicarmi una guida oppure la procedure per far in modo che, sempre se è possibile ma credo di si,che invece di inserire in un form due tbutton ognuno con un'azione buttonclick si possa crearne uno solo e generare il cambiamento del caption in base alle proprie necessità es:

    buttoclick1 send.start buttonclick2 send.stop

    button1click if send.start then
    button1.caption:='stop'
    send.stop

    questo codice è errato però credo faccia intravederre ciò che intendo. Grazie a tutti ciao!

  2. #2
    potresti fare in vari modi,dipende tutto dalle tue consocenze.ti propongo questa semplice soluzione:

    procedure Tform1.button1Click(Sender: TObject);
    begin
    if button1.caption:='pippo'then
    begin
    ....
    end
    else
    begin
    ....
    end;
    end;

    spero che sia questo quello che intndevi..
    fammi sapere

  3. #3

    re

    Non funge mi da questo errore:
    [Error] Unit1.pas(58): Missing operator or semicolon
    [Error] Unit1.pas(61): ';' not allowed before 'ELSE'
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if button1.Caption:='Inizia Scansione'
    begin*
    MfTreeExplorer1.Scan;
    button1.caption:='Cancella Scansione'
    end;
    else
    begin
    MfTreeExplorer1.Cancel;
    end;
    end;
    se tolgo begin* quest'altro
    [Error] Unit1.pas(58): Type of expression must be BOOLEAN

  4. #4
    Anziché verificare la proprietà Caption, potresti usare la proprietà Tag che rapprenseta un piccolo contenitore di informazione per ogni componente.

    codice:
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      if (button1.Tag = 0) then 
        begin
          inizia Scansione' 
          MfTreeExplorer1.Scan; 
          button1.caption := 'Cancella Scansione';
          button1.Tag     := 1;
        end; 
      else 
        begin 
          MfTreeExplorer1.Cancel; 
          button1.caption := 'Inizia Scansione';
          button1.Tag     := 0;
        end; 
    end;
    Alla creazione della form ricordati di settare il valore iniziale per il parametro Tag.

    Per quanto riguarda l'errore che hai segnalato, verifica l'istruzione if (espressione) then, poiché é proprio in questo punti che viene causato l'errore!


  5. #5

    re

    ok funziona grazie mille, mi dava un errore prima perche nell'end prima dell'else mettevo il punto e virgola grazie ancora!

  6. #6

    re

    e nel caso in cui voglia usare invece di tbutton tbitbtn oltre al cambio della caption possio cambiare anche la glyph? gRazie mille ciaooooooooooo!!

  7. #7
    Certo!


  8. #8

    re

    e come dovrei comportarmi se nell'object inspector metto numglyphs= 2 mi da semplicemente due icone sul pulsante come faccio a fare in modo che con tag 0 ne mostri una e con tag1 ne mostri un'altra? Grazie mille scusami se ti sto strssando!

  9. #9
    Ci sono molteplici soluzioni al problema che vuoi affrontare.
    Io te ne espongo una, forse quella più semplice e intuitiva.

    Prima di tutto devi inserire un componente TImageList che avrà il compito di "contenere" le immagini, solo di tipo Bitmap, che vuoi fare alternare nel pulsante.
    Quindi, devi inserire all'interno di questo oggetto le due picture che ti interessano, facendo attenzione alle dimensioni.

    Successivamente puoi utilizzare una variabile temporanea, di tipo Bitmap che potrai utilizzare nell'assegnamento al pulsante.

    Infatti, attraverso il metodo getBitmap dell'oggetto TImageList potrai memorizzare nella variabile temporanea l'immagine che ti interessa.

    Passo al codice che forse rende meglio le idee.

    codice:
    procedure TForm1.Button1Click(Sender: TObject); 
    var myImage: TBitmap;
    begin 
      myImage := TBitmap.Create;
      try
        if ImageList.GetBitmap(button1.Tag ,myImage) then
          button1.Glyph.Assign(myImage);
      
        if (button1.Tag = 0) then 
          begin
            inizia Scansione' 
            MfTreeExplorer1.Scan; 
            button1.caption := 'Cancella Scansione';
            button1.Tag     := 1;
          end; 
        else 
          begin 
            MfTreeExplorer1.Cancel; 
            button1.caption := 'Inizia Scansione';
            button1.Tag     := 0;
          end; 
    
      finally
        myImage.Free;
      end;
    end;
    Come dicevo prima, attraverso il metodo GetBitmap, al quale passi come parametro l'indice dell'immagine che ti interessa e la variabile temporanea che contiene l'immagine.
    Successivamente dovrai assegnare al pulsante il riferimento all'immaginme che hai prelevato dal contenitore, attraverso il metodo button1.Glyph.Assign.

    Non ho molto tempo per descrivere meglio il funzionamento, ma le idee chiave te le ho indicate.
    Ora dovrai fare qualche prova!

    Ciao

  10. #10

    re

    ok ho risolto ho fatto anche lo stesso discorso con hint e tutto va benissimo grazie mille AlbertoPicca ciauz!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.