EnableExplicit

Für allgemeine Fragen zur Programmierung mit PureBasic.
BueNo
Beiträge: 17
Registriert: 06.09.2020 12:15

EnableExplicit

Beitrag von BueNo »

Wenn ich innerhalb einer Routine API-Aufrufe mache, wie z.B.

SendMessage_(GadgetID(W03_Listicon_0), #LVM_SETCOLUMN,1,@Center)
SendMessage_(GadgetID(W03_Listicon_0), #LVM_SETCOLUMN,2,@Center)
SendMessage_(GadgetID(W03_Listicon_0), #LVM_SETCOLUMN,3,@Center)
SendMessage_(GadgetID(W03_Listicon_0), #LVM_SETCOLUMN,4,@Center)

um die Spalten eines Listicons zentriert anzuzeigen, kann ich die Varialbe @Center nicht deklarieren, da es sich offensichtlich um eine BS-Variable handelt.

Wenn ich dann aber wie gewohnt EnableExplicit nutze, um Übersicht über meine Variablen zu behalten, werden die o.g. Vars als nicht deklariert bemängelt. Es wäre schön, wenn ich die Pflicht zur Variablendeklaration auch in Prozeduren verwenden kann, die API-Aufrufe enthalten.

Gruß

BüNo
Axolotl
Beiträge: 266
Registriert: 31.12.2008 16:34

Re: EnableExplicit

Beitrag von Axolotl »

Moin,
wo ist genau das Problem?
Außerhalb von Proceduren kann man folgendes schreiben:

Code: Alles auswählen

  Define Center.LVCOLUMN  ; or Global Center.LVCOLUMN 
    Center\mask = #LVCF_FMT 
    Center\fmt = #LVCFMT_CENTER 
In einer Procedure macht man es so:

Code: Alles auswählen

Procedure SetGadgetColumnsCentered(Gadget) 
  Protected Center.LVCOLUMN 

  Center\mask = #LVCF_FMT 
  Center\fmt = #LVCFMT_CENTER 
  SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMN, 0, @Center)
  SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMN, 1, @Center)
  SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMN, 2, @Center)
EndProcedure 
Geht bei mir mit oder ohne EnableExplicit. Wobei EnableExplicit (eigentlich) immer verwendet werden sollte....
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
BueNo
Beiträge: 17
Registriert: 06.09.2020 12:15

Re: EnableExplicit

Beitrag von BueNo »

Sobald ich in einem MOudl enableexplicit angegeben habe, wird die Vairable @Center als nicht deklariert beanstandet. Wenn ich sie aber deklariere, funktioniert der API-Aufruf nicht mehr.

Gruß
Axolotl
Beiträge: 266
Registriert: 31.12.2008 16:34

Re: EnableExplicit

Beitrag von Axolotl »

Dann zeig mal einen lauffähigen (abgespeckten) Code, dann kann ich/man ggf. weiterhelfen...
Ansonsten stocher ich hier nur rum... .
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: EnableExplicit

Beitrag von NicTheQuick »

Benutzt du in dem Modul Variablen, die außerhalb des Moduls deklariert und definiert werden?
Woher kommt denn dieses "Center"? Irgendwo vorher schreibst du da doch irgendwas rein.
Antworten