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

    [delphi]cambio colore font su evento

    Ciao!
    Sto cercando di ottenere i tipici effetti HTML sui link, quindi effetto hover, visited...etc.
    Nel form però non ho una web browser bensì un componente memo.
    Per l'effetto hover ho sfruttato gli eventi onMouseEnter ed onMouseLeave.
    Per l'effetto visited uso l'evento onClick ma non funziona. Quando clicco sul memo passo ad un altro form tramite i comandi Show e Hide (form2.show e form1.hide)
    Eppure il memo non mantiene il colore che cerco di assegnargli nell'evento onClick quando torno nel form che lo contiene.
    Ci può essere un motivo?


  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Riporta il codice, così lo analizziamo per sicurezza.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Grazie, ecco qua:
    codice:
    procedure TformIndice.Memo1Click(Sender: TObject);
    begin
      formGalleria.Immagini.Close;
      formGalleria.Immagini.DataSet.CommandText:='SELECT TH_ID,TH_DIDA,TH_NAME,TH_SEGNATURA,INDICE_TITOLO FROM TB_THUMB JOIN TB_INDICE ON TB_THUMB.TH_INDICE=TB_INDICE.INDICE_ID WHERE TH_INDICE = 1 ORDER BY TH_ID ASC';
      formGalleria.Immagini.Open;
      formGalleria.Show;
      formgalleria.ScrollBox1.VertScrollBar.Position:= 0;
      memo1.Font.Color:=$000000cc;
      formIndice.Hide;
    end;
    
    procedure TformIndice.Memo1MouseEnter(Sender: TObject);
    begin
     memo1.Font.Color:=$000000cc;
    end;
    
    procedure TformIndice.Memo1MouseLeave(Sender: TObject);
    begin
    memo1.Font.Color:=$00000082;
    end;

  4. #4
    Aggiungo il codice che mi riporta nella form che contiene il controllo memo:
    codice:
    procedure TformGalleria.lblIndiceClick(Sender: TObject);
    begin
      formIndice.Show;
      formGalleria.Close;
    end;
    Il colore del testo contenuto nel controllo memo lo imposto, quando creo il form la prima volta, solo a design time.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da vicky
    Eppure il memo non mantiene il colore che cerco di assegnargli nell'evento onClick quando torno nel form che lo contiene.
    A giudicare dal codice, tu imposti il colore all'interno degli eventi che hai intercettato, quindi se lo imposti a un determinato colore sul Click, questo colore viene resettato quando vai sul controllo in MouseEnter ed esci in MouseLeave.

    Devi memorizzare da qualche parte lo stato di questo controllo (visitato oppure no) e ripristinarlo all'uscita di MouseEnter/MouseLeave.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Ho capito cosa intendi...forse potrei fare un if quando mostro il form in modo che se se il colore del testo è quello modificato (perché già cliccato) il mouse non abbia effetto.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da vicky
    Ho capito cosa intendi...forse potrei fare un if quando mostro il form in modo che se se il colore del testo è quello modificato (perché già cliccato) il mouse non abbia effetto.
    Dovresti memorizzare lo stato di "visitato" in un campo del Form e, in base a questo stato, quando è necessario impostare il colore in MouseLeave, si può scegliere quello relativo allo stato memorizzato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    ...memorizzare lo stato di visitato in un campo del form...
    mi vergogno un po' a dirlo ma non ci riesco proprio.

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da vicky
    ...memorizzare lo stato di visitato in un campo del form...
    mi vergogno un po' a dirlo ma non ci riesco proprio.
    Sarebbe sufficiente mettere una variabile nella sezione private del Form, di tipo Boolean:

    codice:
    TForm1 = class (TForm)
    private
      FVisited: Boolean;
      // ...
    end;
    e valorizzarla in base alla condizione, andandola poi a verificare per sapere quale colore predefinito attribuire al controllo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Grazie davvero!

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.