Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    13

    [Delphi] Determinare Style testo selezionato

    Salve a tutti, sto provando a creare un editor di testi con delphi. Volevo utilizzare i tipi di style Grassetto,Corsivo,Sottolineato,Barrato. Selezionando un testo vorrei capire se questo ha una o più delle seguenti proprietà per mettere una spunta nella suddetta voce del TMainMenu.
    Avevo pensato di utilizzare la funzione SelAttributes, ma c'è un piccolo problema che mi ferma.
    Provando a scrivere qualcosa (molto semplice, giusto per vedere se funzionava) avevo scritto:
    codice:
    begin
      if Testo.SelAttributes.Style=[fsBold] then
      begin
       Grassetto1.Checked:=True;
      end;
    end;
    dove Testo è il nome del TRichEdit e Grassetto1 è il nome della voce nel menù. Ho provato questo ed effettivamente funziona e fa quello che gli richiedo. Ho quindi fatto la stessa cosa anche con il Corsivo, il Sottolineato e il Barrato. Prendendo singolarmente una parte di testo uniformemente formattata funziona, ma quando vado a selezionare una parte di testo in grassetto insieme ad una parte di testo in corsivo (ad esempio:Parteingrassetto Parte in corsivo) viene spuntata una sola voce nel menu e (non vorrei dire una cavolata) mi è sembrato che venga spuntata quella relativa al tipo di Style che è presente nel momento in qui rilascio il pulsante del mouse per smettere di selezionare l'area.
    Quindi la domanda è: come posso fare per determinare quanti tipi di Style sono presenti in un testo selezionato?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Il problema è dato dal fatto che l'attributo Style è un insieme, appartiene al tipo Set of, cioè può contenere uno o più valori del tipo enumerativo di riferimento (fsBold, fsItalic, fsUnderline, ecc.).

    Se vuoi sapere quali sono gli stili applicati, devi utilizzare l'operatore in che verifica l'appartenenza di un elemento all'insieme:

    codice:
    begin
      if fsBold in Testo.SelAttributes.Style then
      begin
       Grassetto1.Checked:=True;
      end;
    end;
    Per conoscere le operazioni elementari sugli insiemi, leggi la documentazione in linea.

    Premesso questo, a meno che non si tratti di un esercizio di stile, il mio suggerimento principale è quello di utilizzare le azioni, quindi il componente TActionList, in particolare le cosiddette Standard Actions, tra cui ve ne sono alcune che racchiudono già la logica che sta implementando nella tua applicazione.

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

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

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    P.S.

    Potrebbe esserti d'aiuto questo video pubblicato da viene realizzata un'applicazione del tutto simile a Wordpad in soli 5 minuti.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    13
    Grazie! Ho guardato gli insiemi e sono riuscito in quello che volevo.

    Il video è ottimo anche se, essendo ancora indietro con delphi, preferisco scrivermi tutto il codice.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da Led64
    Il video è ottimo anche se, essendo ancora indietro con delphi, preferisco scrivermi tutto il codice.
    Non è ben chiaro cosa intendi per essere indietro, o avanti, ma comunque se devi implementare quella funzionalità senz'altro è meglio appoggiarsi al codice della VCL già implementato allo scopo, e ben collaudato, piuttosto che riscrivere da zero una implementazione che include senz'altro molti dei bug già risolti e trattati opportunamente, oltre al fatto di reinventare la ruota laddove Delphi offre un'ottima soluzione già pronta.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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.