Nuova grafica
Moderator: wriedmann
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
Nuova grafica
Io sto completamente ridisegnando la grafica delle mie applicazioni Windows Form.
In allegato un esempio.
Le finestre sono CLASS DevoWindow INHERIT Form.
Le finestre sono senza bordo e la TextBar è sostituita da una Label chiamata Caption.
Come posso scrivere questo codice senza che si generi errore?
PROPERTY Text AS STRING
GET
RETURN SELF:Caption:Text
END GET
SET
SELF:Caption:Text := VALUE
END SET
END PROPERTY
Grazie
In allegato un esempio.
Le finestre sono CLASS DevoWindow INHERIT Form.
Le finestre sono senza bordo e la TextBar è sostituita da una Label chiamata Caption.
Come posso scrivere questo codice senza che si generi errore?
PROPERTY Text AS STRING
GET
RETURN SELF:Caption:Text
END GET
SET
SELF:Caption:Text := VALUE
END SET
END PROPERTY
Grazie
- Attachments
-
- Immagine.jpg (16.38 KiB) Viewed 748 times
Nuova grafica
Ciao Danilo,
vuoi dire che la Label che si chiama "Caption" nella classe DevoWindow non esiste?
Saluti
Wolfgang
vuoi dire che la Label che si chiama "Caption" nella classe DevoWindow non esiste?
Saluti
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Nuova grafica
Ciao Danilo,
questo codice da me compila:
In teoria puoi accorciare e scrivere la property in una riga (secondo me anche più elegante):
Saluti
Wolfgang
questo codice da me compila:
Code: Select all
class DevoWindow inherit Form
protect Caption as Label
property Text as string
get
return self:Caption:Text
end get
set
self:Caption:Text := VALUE
end set
end property
end class
Code: Select all
property Text as string get self:Caption:Text set self:Caption:Text := VALUE
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
Nuova grafica
Si Wolfgang grazie, anche a me compila, ma poi, agganciato ad una qualsiasi applicazione in esecuzione da questo errore:
In questo caso la finestra WLoginEnglish eredita dalla DevoWindow.
Se tolgo la property tutto torna a funzionare.
System.NullReferenceException
Riferimento a un oggetto non impostato su un'istanza di oggetto.
Callstack :
WLoginEnglish.System.Void WLoginEnglish..ctor()() : C:XIDEProjectsDll_and_SystemFilesApplicationsSQLManagerNetPrgWLoginEx.prg : 8
static System.Void SQLManagerNet.Exe.Functions.Start(System.String[] pString)() : C:XIDEProjectsDll_and_SystemFilesApplicationsSQLManagerNetPrgMain.prg : 31
In questo caso la finestra WLoginEnglish eredita dalla DevoWindow.
Se tolgo la property tutto torna a funzionare.
System.NullReferenceException
Riferimento a un oggetto non impostato su un'istanza di oggetto.
Callstack :
WLoginEnglish.System.Void WLoginEnglish..ctor()() : C:XIDEProjectsDll_and_SystemFilesApplicationsSQLManagerNetPrgWLoginEx.prg : 8
static System.Void SQLManagerNet.Exe.Functions.Start(System.String[] pString)() : C:XIDEProjectsDll_and_SystemFilesApplicationsSQLManagerNetPrgMain.prg : 31
Nuova grafica
Ciao Danilo,
probabilemente la tua property viene chiamata prima che il label "Caption" è stato creato.
In questo caso scriverei questo codice:
Dovrebbe esistere una possibilità ancora più corta, ma devo controllare.
Wolfgang
probabilemente la tua property viene chiamata prima che il label "Caption" è stato creato.
In questo caso scriverei questo codice:
Code: Select all
property Text as string
get
if self:Caption == null
return ""
else
return self:Caption:Text
endif
end get
set
if self:Caption != null
self:Caption:Text := VALUE
endif
end set
end property
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
Nuova grafica
NO niente anche così non cambia, sembra che richiamare una istanza della form, Self:Text appunto, essendo la finestra senza bordi crei il problema. Si dovrebbe secondo me poter scrivere un qualcosa del tipo : Override Property Text as string
Danilo
Danilo
Nuova grafica
Ciao Danilo,
ok, capito,
In effetti la classe System.Windows.Forms.Form ha già un property che si chiama "Text":
https://docs.microsoft.com/en-us/dotnet ... .form.text
In questo caso in effetti devi aggiungere la keyword "ovveride" davanti per dire che vuoi sovvrascrivere la property della classe parente.
Wolfgang
ok, capito,
In effetti la classe System.Windows.Forms.Form ha già un property che si chiama "Text":
https://docs.microsoft.com/en-us/dotnet ... .form.text
In questo caso in effetti devi aggiungere la keyword "ovveride" davanti per dire che vuoi sovvrascrivere la property della classe parente.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
- softdevo@tiscali.it
- Posts: 191
- Joined: Wed Sep 30, 2015 1:30 pm
Nuova grafica
Ciao Wolfgang, mettendo OVERRIDE l'errore non viene generato e l'applicazione parte, ma l'assegnazione non funziona,
credo che dovrò scrivere SELF:Caption:Text := "bla bla bla" per forza.
Danilo
credo che dovrò scrivere SELF:Caption:Text := "bla bla bla" per forza.
Danilo
Nuova grafica
Hi Danilo,
What is SELF:Caption? Is it an object? Are you sure this is initialized? The error message seems to say that this is NULL.
Maybe you can produce a small sample and post it here to have a look?
.
What is SELF:Caption? Is it an object? Are you sure this is initialized? The error message seems to say that this is NULL.
Maybe you can produce a small sample and post it here to have a look?
.
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Nuova grafica
Ciao Danilo,
potresti darci un piccolo esempio che dimostra il problema?
Wolfgang
potresti darci un piccolo esempio che dimostra il problema?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it