Custom controls e superclassi

Ciao a tutti! Non so se si pu fare quello che ho in mente, per cui mi rivolgo a voi che siete pi esperti di me in Xojo.

In una window ho una serie di BevelButton identici (li uso vicino a dei TextField per ottenere l’elenco dei vali validi per quel TextField); questi BevelButton hanno un’immagine (propriet Icon), lo sfondo colorato (BackColor) e due Eventi (GotFocus e LostFocus per cambiare il colore dello sfondo).
Poich dovr utilizzare tali BevelButton anche su altre window, mi chiedo (e vi chiedo): possibile creare una classe da uno di questi BevelButton, in modo che sia semplice piazzarli dove voglio senza dover reimpostare tutte le propriet?

Grazie a chiunque mi dar delle indicazioni.

Nedi

Ciao,
provo a farla molto semplice…

dovresti prima creare la classe
es: Class_bevelbutton alla quale puoi associare eventi standard o creartene di personalizzati, propriet e metodi
Poi trascini la classe in tutte le windows in cui ti servono

Grazie Enzo per la risposta.
Ero arrivato anch’io fino alla creazione di una nuova classe, indicando BevelButton come super-classe.
Ho anche aggiunto i due eventi GotFocus e LostFocus.
Quello che non riesco a fare assegnare le propriet che metterei nell’IDE, vale a dire Icon, IconAlign, BackColor, Width, Height, Caption, HasBackColor.
L’unico punto in cui potrei indicarle nell’evento Open, ma questo comporta che, quando trascino la mia classe in una window l’aspetto visivo non rispecchia le propriet che ho indicato nell’evento Open: tali propriet si vedono (ovviamente) solo quando eseguo l’applicazione.
Mi manca qualcosa a livello di IDE.ma qui mi arrendo!

Per fare quello che tu chiedi, fai un clic destro sulla nuova classe che hai creato e scegli “Inspector Behavior”.
Si aprir un pannello nel quale potrai customizzare le propriet che risulteranno impostate quando trascinerai la classe in una window.

Grande Pietro! (O sarebbe meglio dire Pietro il Grande?)
Le tue indicazioni sono sempre precise! Grazie ad esse sono riuscito a fare quasi tutto quello che volevo: le uniche cose che non sono riuscito ad ottenere sono l’indicazione della picture che vorrei nella propriet Icon (evidentemente non basta indicare il nome dell’immagine), e il fatto di non volere alcuna caption.
Ma, a parte queste due cose, il resto funziona.
Grazie mille!

Se non vuoi la caption lasci vuoto il valore nell’Inspector Behavior e levi il segno di spunta (non apparir nell’IDE)

Grazie Antonio, ma facendo cos rimane la caption “Untitled”: perch funzioni bisogna inserire uno spazio.

Adesso l’ultima cosa che non riesco a fare impostare un’immagine nella propriet Icon.

La stringa vuota viene interpretata come nessun valore che poi in avvio provoca il valore “Untitled”. Devi dare un valore e quindi la stringa composta da uno spazio l’unica soluzione in questo caso.

Per la propriet icon pi difficile: quello che vorresti impostare un valore del progetto quindi difficilmente definibile a priori.
Cosa succede se usi la tua classe in un progetto dove questa immagine non esiste?

Grazie Antonio!
Dopo vari smanettamenti sono riuscito a risolvere anche il problema della picture come Icon (per concordo pienamente con te sul fatto che questo vale finch rimango nell’ambito del progetto in cui presente l’immagine che mi serve).

Siccome impostare la propriet Icon con il nome dell’immagine non funzionava (come era prevedibile) ho seguito un metodo poco ortodosso: ho esportato una window che conteneva un pulsante come il mio, ed ho visto che la propriet Icon conteneva un numero di 10 cifre. Ho copiato tale numero nell’Inspector Behavior e, dopo smanettamenti vari, sono riuscito ad ottenere quello ceh volevo.
Non ho capito cosa sia quel numero (probabilmente un riferimento interno all’immagine), ma tant’ Ovviamente in un altro progetto non funzioner (anche se non ho ancora provato), e credo che non funzioni neanche se copio la stessa immagine nel nuovo progetto, perch probabilmente le verrebbe assegnato un numero interno diverso (almeno cos credo).

Di nuovo grazie per le tue sempre preziose indicazioni!

Nedi