Salve.Non riesco a capire perchè l'istruzione Type mi da l'errore che posto nello screenshot. Chi mi può aiutare?
https://paste.pics/3G7HY
Salve.Non riesco a capire perchè l'istruzione Type mi da l'errore che posto nello screenshot. Chi mi può aiutare?
https://paste.pics/3G7HY
Dallo screenshot non si capisce molto, ma sembra che tu abbia scritto quel codice chissà dove, probabilmente non in un punto in cui è lecito posizionarlo.
La parola chiave type consente di dichiarare tipi nelle righe seguenti: il fatto che la dichiarazione sia direttamente seguita da codice lascia pensare che tu abbia messo direttamente nella sezione interface delle istruzioni, senza quindi creare un contesto in cui eseguirle, poiché possono stare esclusivamente all'interno di procedure, o function, oppure metodi di una classe.
Consiglierei un ripasso dei fondamenti del linguaggio e della struttura generale delle Unit.
P.S.: il codice è meglio incollarlo qui, è completo (almeno delle parti rilevanti) piuttosto che allegare screenshot.
Ciao!![]()
OK faccio come dici. L'end finale l'ho messo io perchè ell'esempio che ho copiato non c'era, ho fatto male? Come hai visto non capisco perchè mi dà l'errore su widt. Ho cercato in rete un aiuto ma non so se il seguente codice poteva servirmi. Ho due oggetti chechkBox, il problema, se così si può definire, è che quando passo da un chechkbox all'altro sul secondo compare la spunta ma solo con DbClick (e viceversa).Io vorrei la spunta con solo un click, e pensavo dopo ave provato il type se avessi risolto il "problema". Ho ripreso il delphi dopo mesi che non lo usavo e molte cose non le ricordo. Grazie di tutto.
questo il codice:
type
TCheckBoxEx = class(TCheckBox) ;
with TCheckBoxEx(CheckBox1) do
begin
ClicksDisabled := true;
Checked := NOT Checked;
ClicksDisabled := false;
end;
end;
Quando si prende un esempio, si dovrebbe cercare di comprendere quello che c'è dietro, o analizzare i suoi elementi per capire come usarli nel codice.
Non si può copiare/incollare passivamente, in un punto a caso di un file, e aggiungere arbitrariamente un "end" per provare.
Ti da errore su with perché quel codice è sicuramente nel posto sbagliato.
Sulle cose avanzate puoi sorvolare, ma sulla struttura basilare delle Unit no: il codice che scrivi devi sapere dove ha senso inserirlo.
Ripeto quello che ho già scritto: stai unendo due cose che non c'entrano l'una con l'altra e vanno sicuramente in posti diversi.
La parola type la puoi usare nella sezione interface della unit, o nella sezione implementation, per dichiarare un nuovo tipo.
Il codice che hai scritto dopo, ossia il costrutto with e quello che segue, non ha senso posizionarlo dove l'hai messo tu, a meno che non manchino delle parti salienti del tuo codice.
E' un costrutto che esegue del codice, sono delle istruzioni, e pertanto vanno inserire all'interno di una procedure o di una function, oppure nel metodo che gestisce un evento come il click sulla CheckBox, ma non puoi scriverlo così di seguito, a caso, senza un criterio, dentro il file che contiene la dichiarazione del tipo.
Ripassa i fondamentali di Delphi, oppure studia il significato di type e la struttura delle Unit, e riporta la sezione del file in cui hai inserito quel codice perché preso così non ha senso logico: è fuori posto, unisce due cose che non devono stare assieme, non si capisce a cosa sia correlato.
Ciao!![]()
ok, ho capito, grazie:
L'istruzione type va inserita sotto le uses principali o dopo la type del form i questo modo:
type
prova = class
proprieta1 : real;
proprieta2 : real;
end;
e si richiama dove ti serve in questo modo
var oggetto : prova
. . . . .
oggetto : prova.Create;
. . . . .
. . . . .
oggetto.Free;
se non sbaglio l'istruzione with non la puoi usare nel type
Grazie, questi consigli sono sempre utili. Comunque la routinetta type l'ho copiata da un sito. Grazie ancora