Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [delphi] prelevare una stringa mista da CheckListBox

    ciao gente,
    mi sapreste dire come si fa aprelevare una strtinga specifica da ua checklist box?

    |_| valore 1: 100
    [_| valore 2: 50

    io vorrei che una volta che l'utente seleziona una check, venisse prelevato solo il valore numerico.
    100 o 50 nell'eempio.

    mi sapreste aiutare?

    perlomeno ditemi come si preleva una stringa intera... "valore 1: 100" per esempio

    grgazie

  2. #2
    Metti un evento sull'onClick:
    codice:
    Label1.Caption:=CheckListBox1.Items.Strings[CheckListBox1.ItemIndex];
    Nella label ti trovi il valore dell'ultima riga che è stata cliccata, non dell'ultima "checkata"

    Se vuoi l'ultima "checkata" usa:
    codice:
    if CheckListBox1.Checked[CheckListBox1.ItemIndex]
    then Label1.Caption:=CheckListBox1.Items.Strings[CheckListBox1.ItemIndex];
    Saluti

  3. #3
    ci ho provato, ,ma mi dice che non è possibile applicare un metodo del genere e mi da un errore!


    in realtà però non ho provao ad assegnare il valore ad un componente ma ad una variabile...
    tipo:

    var n:string;
    begin
    n:=CheckList.Item.etc..




  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    ci ho provato, ,ma mi dice che non è possibile applicare un metodo del genere e mi da un errore!
    Che tipo di errore?

    in realtà però non ho provao ad assegnare il valore ad un componente ma ad una variabile...
    Che sia una proprietà di tipo stringa o una variabile di tipo stringa, la cosa importante è che il valore venga assegnato ad una stringa...

    tipo:

    var n:string;
    begin
    n:=CheckList.Item.etc..
    C'è il copia e incolla! Come si fa a capire l'errore se nel riportare il codice scrivi etc etc nella parte che probabilmente è responsabile?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    ricecvo unn erroer perchè la mia variabile è di tipo integer ma la stringa nella checklist box contiene uuna serie MISTA di tipi:

    non c'è infatti n solo valore, bensì del testo:

    Valore 1: 100
    Valore 2: 667
    Valore 3: 6789

    io vorrei che cliccando su i check affianco delle stringhe venisse prelevato solo il valore 100 o 667 etc...

    capit'?

    grazie!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Lyll0
    ricecvo unn erroer perchè la mia variabile è di tipo integer ma la stringa nella checklist box contiene uuna serie MISTA di tipi:
    Il tipo è sempre stringa, anche se la tua CheckListBox contenesse addirittura solo valori numerici.

    non c'è infatti n solo valore, bensì del testo:

    Valore 1: 100
    Valore 2: 667
    Valore 3: 6789

    io vorrei che cliccando su i check affianco delle stringhe venisse prelevato solo il valore 100 o 667 etc...
    Devi estrarre l'intera stringa memorizzandola all'interno di una variabile, cercare la posizione del carattere ":" tramite la funzione Pos...i caratteri che si trovano 2 posizioni dopo quella restituita da Pos possono essere estratti dalla stringa completa (che include "Valore 1:") tramite la funzione Copy e successivamente convertiti in grandezza numerica intera tramite la funzione StrToInt.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    ci sono riuscito!

    allora se dovesse servire a qualcuun altro propongo la mia soluzione:

    1) creare una variabile di tipo stringa. var testo:strring
    2) prelevare il valore della stringa INTERA dalla CheckBox quano l'utente seleziona un check:
    codice:
    procedure CheckBoxClickCheck
    var testo:string;
    begin
       testo:=CheckBox.Items.Strings[CheckBox.ItemIndex];
    [...]
    3) ho creato una casistica per le stringhe che appaiono nella lista.
    infatti mi appare un testo tipo:
    Valore 1: 6770
    Valore 2: 1
    e così via.
    siccome Valore è un testo fisso ma il numero seguente è generato da un ciclo for di un'altra proceddura, che ha il compito di scrivere i valori nella Check, alla fine di qusta procedura che riempie la lista ho messo una cosa tipo:
    codice:
    iteratorefor:=numero;
    dove numero è dichiarata PUBBLICAMENTE
    4) ora, nella proceddura CickCheck ho messo
    codice:
    if numero<10 then //(il numero dopo valore è composto da un solo carattere)
       Delete(testo,1,lunghezza che voglio escludere)
    else if numero >=10 AND numero<100 then
    Delete(testo,1,lunghezza che voglio escludere+1)
    5) il valore che rimane lo converto in Integer e ci faccio quello mi pare...

    carino no?

  8. #8
    oddio alka non ti avevo visto!

    non so perchè ma non mi arrivano le notifiche!

    cmq grazie per l'idea!

  9. #9
    senti colgo l'occasione epr chiedere una piccola cosa, scema ma che non riesco a fare.

    vorrei fare una cosa semplice:
    tieni conto che quando le stringhe riempiono la check, ,predefinitamente tutte le caselle sono selezionate.
    se l'utente clicca su una check box vorrei che questa si deselezionasse e avvenisse una sottrazione dala somma totale,
    se questo riclicca sulla stessa il valore si deve SOMMARE...

    io ho fatto:
    codice:
    sel:=Check.ItemsIndex
    if Chck.Checked[sel]:=true then begin
      somma;
      check.Checked[sel]:=false; end;
    else if check.checked[sel]:=false then begin
      sottrai;
      check.cheked[sel]:=true end;
    ma mi fa solo somme o solo sottrazioni, qualora cambiassi di poco il codice...
    dove toppo?

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Forse era meglio osservare il codice di Somma o Sottrai, visto che sono le procedure che si occupano effettivamente del calcolo.

    A parte questo, io farei proprio in un altro modo.

    Ad ogni clic sulla CheckListBox, richiamerei una procedura singola che si faccia la scansione dei valori inseriti nel controllo ed esegua, partendo da 0 o da un ammontare prefissato, la somma o la sottrazione del singolo valore in base al fatto che sia "checkato" oppure no.
    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.