Wie kann ich eine Variable Nachdefinieren?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wie kann ich eine Variable Nachdefinieren?

von LSH_Dackel » Di, 15.08.2006 20:39

Toxitom danke für die ganzen tipps :D

zu deiner Frage was

Code: Alles auswählen

LK2M = LK2.getText = "Mathematik"
betrifft hiermit weise ich der Abkürzung LK2M die eigenschaft
LK2.getText = "Mathematik" zu.

Hab eigentlich auch gedach "Jetz brint er mir bestimmt gleich nen Fehler!"
aber er hats so gemacht wie ich wollte :D

Und genau zu dem teil hab ich noch ne frage
Das kann ich ja net als object dimen was is des dann?

von Toxitom » Di, 15.08.2006 16:56

Hey LSH_Dackel,

hmm, na ja, da sind schon noch ein paar "dicke" Hunde drin im Code. Kann mir gar nicht vorstellen, dass das funktioniert.

1. Tipp: Nutze Arrays, das macht dir das Leben deutlich einfacher :-)
z.B. die ganzen Fächer: einmal in einem Array definiert, kannst du immer wieder darauf zurückgreifen. So in der Art:

Code: Alles auswählen

dim aFaecher()
aFaecher = array("Deutsch", "Englisch", "Mathematik", ...)
So einen String-Array kann du dann auch direkt einem Listenfeld zuweisen - in einer Zeile.

2. Tipp: Alle immer wieder benutzten Objekte definierst du vor der ersten Sub, ähnlich wie deinen Dialog. In der sub config schliesslich weist du allen die entsprechenden Inhalte zu - dann kannst du immer darauf zugreifen.

Code: Alles auswählen

Public MyDlg as object
Dim LK1 as Object
Dim aFaecher()
...

sub config
DialogLibraries.LoadLibrary( "Konfig" )
MyDlg = CreateUnoDialog( DialogLibraries.Konfig.Fach_Abfrage_Dialog )
MyDlg.Model.Step=1
LK1 = MyDlg.getControl("LK1")
...
schflaeche_einstellen
MyDlg.Execute() 
end sub
3. Tipp: Streiche die Zeile mit dem Dispose()

Code: Alles auswählen

MyDlg.Dispose() 
Die brauchst du nicht und sie stört nur. Der Dialog wird beendet mit den Buttons, der Methode "endexecute()" oder durch das Schliessen Kreuz. Intern verbleibt das Objekt aber noch erhalten, so dass du auch weiterhin auf die Kontrollelemente zugreifen kannst. Zerstörst du das Objekt komplett (mit dispose()) geht das nicht mehr. Das Objekt wird von OOo automatisch zerstört und der Speicherplatz freigegeben, wenn er benötigt wird. Hier musst du nicht eingreifen.

4. Tipp: Was diese Zeilen bedeuten sollen ist mir leider schleierhaft. Kann mir übrigens auch nciht vorstellen, dass der Interpreter hier nicht "muckt"

Code: Alles auswählen

LK2M = LK2.getText = "Mathematik" 
Zwei Zuweisungen in einer Zeile hinterienander??? Das geht nicht. Entweder hast du ein Kommentarzeichen vergessen nach getText oder der Interpreter hört dort einfach auf - und ignoriert den Rest. Im übrigen erschliesst sich mir nicht der Sinn dieser Aktion??

5. Tipp: Du sparst dir Schreibarbeit immer dort, wo sinnvoll Variable eingesetzt werden können, nämlihc immer dann, wenn du häufig darauf zurückgreifst, wie hier:

Code: Alles auswählen

select case LK1.getText
       case = "Mathematik"
       doppeltes_lottchen(LK1.getText) 
      ...
Hier macht es Sinn, entsprechend zu kürzen:

Code: Alles auswählen

dim sT as string
sT = LK1.getText
select case sT
case "Mathematik"
doppeltes_lottchen(sT)
... 
Na ja, das mal so für den Anfang ;-)

Viele Grüße
Thomas

von LSH_Dackel » Di, 15.08.2006 14:11

Also ok ich möchte definitionen von Abkürzungen nicht in jedem Makron neu definieren müssen wie hier. Wie soll ich des machen?


Code: Alles auswählen

Public MyDlg as object
sub config
DialogLibraries.LoadLibrary( "Konfig" )
MyDlg = CreateUnoDialog( DialogLibraries.Konfig.Fach_Abfrage_Dialog )
MyDlg.Model.Step=1
schflaeche_einstellen
MyDlg.Execute()
MyDlg.Dispose()


end Sub

Sub schflaeche_einstellen
Back=MyDlg.GetControl("Z")
If MyDlg.Model.Step=1 then
back.model.enabled=false
else
back.model.enabled=true
End if
Fore=MyDlg.GetControl("W")
If MyDlg.Model.Step<5 then
Fore.model.enabled=true
else
Fore.model.enabled=false
End if
End sub 

Sub schflaeche_cbBack
    MyDlg.Model.Step=   MyDlg.Model.Step-1
    schflaeche_einstellen
End sub
Sub schflaeche_cbFore
    MyDlg.Model.Step=   MyDlg.Model.Step+1
    schflaeche_einstellen
End sub



Sub MSG
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
msgbox LK2.getText + " und " + LK1.getText
end sub


Sub MSG_Fehler
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
ABIGK1 = MyDlg.GetControl("ABIGK1")
ABIGK2 = MyDlg.GetControl("ABIGK2")
if LK1.getText = "" or LK2.getText = "" then
msgbox "Wähle deine beiden Leistungskurse aus!"
else
schflaeche_cbFore
end if 
end sub

Sub Liste1
       LK2 = MyDlg.GetControl("LK2")
       LK2.removeitems(0,21)
       LK2.text=""
       Dim strEintraege(16)
       LK2 = MyDlg.GetControl("LK2")
       strEintraege(0)="Mathematik"
       strEintraege(1)="Physik"
       strEintraege(2)="Chemie"
       strEintraege(3)="Biologie"
       strEintraege(4)="Deutsch"
       strEintraege(5)="Englisch"
       strEintraege(6)="Latein"
       strEintraege(7)="Französisch"
       strEintraege(8)="Kunst"
       strEintraege(9)="Musik"
       strEintraege(10)="Geschichte"
       strEintraege(11)="Geographie"
       strEintraege(12)="Sozialkunde"
       strEintraege(13)="Wirtschaft und Recht"
       strEintraege(14)="Religion ev."
       strEintraege(15)="Religion ev."
       strEintraege(16)="Sport"
       LK2.additems(strEintraege(),1)
end sub

Sub LKs
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")

select case LK1.getText
       case = "Mathematik"
       Liste1
       LK2.removeitems(0,1)
       case = "Physik"
       Liste1
       LK2.removeitems(1,1)
       case = "Chemie"
       Liste1
       LK2.removeitems(2,2)
       case = "Deutsch"
       Liste1
       LK2.removeitems(4,1)
       case = "Englisch"
       Liste1
       LK2.removeitems(5,1)
       case = "Latein"
       Liste1
       LK2.removeitems(6,1)
       case = "Französisch"
       Liste1
       LK2.removeitems(7,1)
       case = "Griechisch"
       Liste1
       case = "Musik"
       Liste1
       LK2.removeitems(8,21)
       case = "Sozialkunde"
       Liste1
       LK2.removeitems(8,21)
       case = "Wirtschaft und Recht"
       Liste1
       LK2.removeitems(8,21)
end select
End Sub

sub dfs_ABIGK1
ABIGK1 = MyDlg.GetControl("ABIGK1")
       ABIGK1.removeitems(0,21)
       ABIGK1.text=""
        Dim strEintraege(4)
       strEintraege(0)="Deutsch"
       strEintraege(1)="Englisch"
       strEintraege(2)="Latein"
       strEintraege(3)="Französisch"
       strEintraege(4)="Griechisch"
       ABIGK1.additems(strEintraege(),1)
end sub
sub mnt_ABIGK1
ABIGK1 = MyDlg.GetControl("ABIGK1")
       ABIGK1.removeitems(0,21)
       ABIGK1.text=""
        Dim strEintraege(3)
       strEintraege(0)="Mathematik"
       strEintraege(1)="Physik"
       strEintraege(2)="Chemie"
       strEintraege(3)="Biologie"
       ABIGK1.additems(strEintraege(),1)
end sub

sub gpr_ABIGK2
ABIGK2 = MyDlg.GetControl("ABIGK2")
       ABIGK2.removeitems(0,21)
       ABIGK2.text=""
       Dim strEintraege(6)
       strEintraege(0)="Geschichte"
       strEintraege(1)="Geographie"
       strEintraege(2)="Sozialkunde"
       strEintraege(3)="Wirtschaft und Recht"
       strEintraege(4)="Religion ev."
       strEintraege(5)="Religion ev."
       strEintraege(6)="Ethik"
       ABIGK2.additems(strEintraege(),1)
end sub

sub gpr_ABIGK1
ABIGK1 = MyDlg.GetControl("ABIGK1")
       ABIGK1.removeitems(0,21)
       ABIGK1.text=""
       Dim strEintraege(6)
       strEintraege(0)="Geschichte"
       strEintraege(1)="Geographie"
       strEintraege(2)="Sozialkunde"
       strEintraege(3)="Wirtschaft und Recht"
       strEintraege(4)="Religion ev."
       strEintraege(5)="Religion ev."
       strEintraege(6)="Ethik"
       ABIGK1.additems(strEintraege(),1)
end sub

sub alle_faecher_ABIGK2
ABIGK2 = MyDlg.GetControl("ABIGK2")
       Dim strEintraege(19)
       strEintraege(0)="Mathematik"
       strEintraege(1)="Physik"
       strEintraege(2)="Chemie"
       strEintraege(3)="Biologie"
       strEintraege(4)="Deutsch"
       strEintraege(5)="Englisch"
       strEintraege(6)="Spanisch"
       strEintraege(7)="Latein"
       strEintraege(8)="Französisch"
       strEintraege(9)="Griechisch"
       strEintraege(10)="Kunst"
       strEintraege(11)="Musik"
       strEintraege(12)="Geschichte"
       strEintraege(13)="Geographie"
       strEintraege(14)="Sozialkunde"
       strEintraege(15)="Wirtschaft und Recht"
       strEintraege(16)="Religion ev."
       strEintraege(17)="Religion kath."
       strEintraege(18)="Ethik"
       strEintraege(19)="Sport"
       ABIGK2.additems(strEintraege(),1)
end sub

sub doppeltes_lottchen(x)
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
ABIGK1 = MyDlg.GetControl("ABIGK1")
ABIGK2 = MyDlg.GetControl("ABIGK2")
for i = 0 to 19
if ABIGK2.getitem(i) = x then
ABIGK2.removeitems(i,1)
end if
next i
end sub

sub frei_ABIGK2
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
ABIGK1 = MyDlg.GetControl("ABIGK1")
ABIGK2 = MyDlg.GetControl("ABIGK2")
       ABIGK2.removeitems(0,21)
       ABIGK2.text=""
       alle_faecher_ABIGK2
       
select case LK1.getText
       case = "Mathematik"
       doppeltes_lottchen(LK1.getText)
       case "Physik"       
       doppeltes_lottchen(LK1.getText)
       case = "Chemie"
       doppeltes_lottchen(LK1.getText)
       case = "Deutsch"
       doppeltes_lottchen(LK1.getText)
       case = "Englisch"
       doppeltes_lottchen(LK1.getText)
       case = "Latein"
       doppeltes_lottchen(LK1.getText)
       case = "Französisch"
       doppeltes_lottchen(LK1.getText)
       case = "Griechisch"
       doppeltes_lottchen(LK1.getText)
       case = "Musik"
       doppeltes_lottchen(LK1.getText)
       case = "Sozialkunde"
       doppeltes_lottchen
       case = "Wirtschaft und Recht"
       doppeltes_lottchen(LK1.getText)
       
       
end select

select case LK2.getText
       case = "Mathematik"
       doppeltes_lottchen(LK2.getText)
       case = "Physik"
       doppeltes_lottchen(LK2.getText)
       case = "Chemie"
       doppeltes_lottchen(LK2.getText)
       case = "Biologie"
       doppeltes_lottchen(LK2.getText)
       case = "Deutsch"
       doppeltes_lottchen(LK2.getText)
       case = "Englisch"
       doppeltes_lottchen(LK2.getText)
       case = "Latein"
       doppeltes_lottchen(LK2.getText)
       case = "Französisch"
       doppeltes_lottchen(LK2.getText)
       case = "Kunst"
       doppeltes_lottchen(LK2.getText)
       case = "Musik"
       doppeltes_lottchen(LK2.getText)
       case = "Geschichte"
       doppeltes_lottchen(LK2.getText)
       case = "Geographie"
       doppeltes_lottchen(LK2.getText)
       case = "Sozialkunde"
       doppeltes_lottchen(LK2.getText)
       case = "Wirtschaft und Recht"
       doppeltes_lottchen(LK2.getText)
       case = "Religion ev."
       doppeltes_lottchen(LK2.getText)
       case = "Religion kath."
       doppeltes_lottchen(LK2.getText)
       case = "Sport"
       doppeltes_lottchen(LK2.getText)
end select

select case ABIGK1.getText
       case = "Mathematik"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Physik"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Chemie"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Biologie"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Deutsch"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Englisch"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Latein"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Französisch"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Griechisch"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Kunst"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Musik"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Geschichte"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Geographie"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Sozialkunde"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Wirtschaft und Recht"
       doppeltes_lottchen(ABIGK1.getText)  
       case = "Religion ev."
       doppeltes_lottchen(ABIGK1.getText)
       case = "Religion kath."
       doppeltes_lottchen(ABIGK1.getText)
       case = "Ethik"
       doppeltes_lottchen(ABIGK1.getText)
       case = "Sport"
       doppeltes_lottchen(ABIGK1.getText)
end select
    
end sub

sub extrawurscht
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
ABIGK1 = MyDlg.GetControl("ABIGK1")
ABIGK2 = MyDlg.GetControl("ABIGK2")
LK1M = LK1.getText = "Mathematik"
LK1Ph = LK1.getText = "Physik"
LK1Chem = LK1.getText = "Chemie"
LK1De = LK1.getText = "Deutsch"
LK1Eng = LK1.getText = "Englisch"
LK1Lat = LK1.getText = "Latein"
LK1Fr = LK1.getText = "Französisch"
LK1Gr = LK1.getText = "Griechisch"
LK1Mu = LK1.getText = "Musik"
LK1Sk = LK1.getText = "Sozialkunde"
LK1WR = LK1.getText = "Wirtschaft und Recht"

LK2M = LK2.getText = "Mathematik"
LK2Ph = LK2.getText = "Physik"
LK2Chem = LK2.getText = "Chemie"
LK2Bio = LK2.getText = "Biologie"
LK2De = LK2.getText = "Deutsch"
LK2Eng = LK2.getText = "Englisch"
LK2Lat = LK2.getText = "Latein"
LK2Fr = LK2.getText = "Französisch"
LK2Ku = LK2.getText = "Kunst"
LK2Mu = LK2.getText = "Musik"
LK2Gesch = LK2.getText = "Geschichte"
LK2Geo = LK2.getText = "Geographie"
LK2Sk = LK2.getText = "Sozialkunde"
LK2WR = LK2.getText = "Wirtschaft und Recht"
LK2Re = LK2.getText = "Religion ev."
LK2Rk = LK2.getText = "Religion kath."
LK2Spo = LK2.getText = "Sport"
if (LK1M  and LK2Gesch ) or (LK1M and LK2Geo) or (LK1M  and LK2Sk ) or (LK1M  and LK2WR ) or (LK1M  and LK2Re ) or (LK1M  and LK2Rk) or (LK1Sk and LK2M ) or (LK1WR  and LK2M) or (LK1Ph and LK2Gesch) or (LK1Ph and LK2Geo) or (LK1Ph and LK2Sk) or (LK1Ph and LK2WR) or (LK1Ph and LK2Re) or (LK1Ph and LK2Rk) or (LK1Sk and LK2Ph) or (LK1WR and LK2Ph)or (LK1Chem and LK2Gesch) or (LK1Chem and LK2Geo) or (LK1Chem and LK2Sk) or (LK1Chem and LK2WR) or (LK1Chem and LK2Re) or (LK1Chem and LK2Rk) or (LK1Sk and LK2Chem) or (LK1WR and LK2Chem)or (LK1Sk and LK2Bio) or (LK1WR and LK2Bio) then
    frei_ABIGK2
elseif  (LK1M and LK2Eng) or (LK1M and LK2Lat) or (LK1M and LK2Fr) or (LK1Ph and LK2Eng) or (LK1Ph and LK2Lat) or (LK1Ph and LK2Fr) or (LK1Chem and LK2Eng) or (LK1Chem and LK2Lat) or (LK1Chem and LK2Fr) or (LK1Eng and LK2M) or (LK1Eng and LK2Ph) or (LK1Eng and LK2Chem) or (LK1Eng and LK2Bio)or (LK1Lat and LK2M) or (LK1Lat and LK2Ph) or (LK1Lat and LK2Chem) or (LK1Lat and LK2Bio)or (LK1Fr and LK2M) or (LK1Fr and LK2Ph) or (LK1Fr and LK2Chem) or (LK1Fr and LK2Bio)or (LK1Gr and LK2M) or (LK1Gr and LK2Ph) or (LK1Gr and LK2Bio) then
     frei_ABIGK2
elseif  (LK1Eng and LK2Gesch) or (LK1Eng and LK2Geo) or (LK1Eng and LK2Sk) or (LK1Eng and LK2WR) or (LK1Eng and LK2Re) or (LK1Eng and LK2Rk) or (LK1Lat and LK2Gesch) or (LK1Lat and LK2Geo) or (LK1Lat and LK2Sk) or (LK1Lat and LK2WR) or (LK1Lat and LK2Re) or (LK1Lat and LK2Rk) or (LK1Fr and LK2Gesch) or (LK1Fr and LK2Geo) or (LK1Fr and LK2Sk) or (LK1Fr and LK2WR) or (LK1Fr and LK2Re) or (LK1Fr and LK2Rk) or (LK1Gr and LK2Gesch) or (LK1Gr and LK2Geo) or (LK1Gr and LK2Sk) or (LK1Gr and LK2WR) or (LK1Gr and LK2Re) or (LK1Gr and LK2Rk) or (LK1Sk and LK2Eng) or (LK1Sk and LK2Lat) or (LK1Sk and LK2Fr) or (LK1WR and LK2Eng) or (LK1WR and LK2Lat) or (LK1WR and LK2Fr)then
     frei_ABIGK2

elseif(LK1De and LK2Gesch) or (LK1De and LK2Geo) or (LK1De and LK2Sk) or (LK1De and LK2WR) or (LK1De and LK2Re) or (LK1De and LK2Rk) or (LK1Sk and LK2De) or (LK1WR and LK2De)then
 if ABIGK1.gettext = "Mathematik" then
  frei_ABIGK2
 else
 ABIGK1 = MyDlg.GetControl("ABIGK1")
       ABIGK1.removeitems(0,21)
       ABIGK1.text=""
        Dim strEintraege(3)
       strEintraege(0)="Englisch"
       strEintraege(1)="Latein"
       strEintraege(2)="Französisch"
       strEintraege(3)="Griechisch"
       ABIGK1.additems(strEintraege(),1)
 end if
end if
end sub

Sub ABIGKs
LK1 = MyDlg.GetControl("LK1")
LK2 = MyDlg.GetControl("LK2")
ABIGK1 = MyDlg.GetControl("ABIGK1")
ABIGK2 = MyDlg.GetControl("ABIGK2")
LK1M = LK1.getText = "Mathematik"
LK1Ph = LK1.getText = "Physik"
LK1Chem = LK1.getText = "Chemie"
LK1De = LK1.getText = "Deutsch"
LK1Eng = LK1.getText = "Englisch"
LK1Lat = LK1.getText = "Latein"
LK1Fr = LK1.getText = "Französisch"
LK1Gr = LK1.getText = "Griechisch"
LK1Mu = LK1.getText = "Musik"
LK1Sk = LK1.getText = "Sozialkunde"
LK1WR = LK1.getText = "Wirtschaft und Recht"

LK2M = LK2.getText = "Mathematik"
LK2Ph = LK2.getText = "Physik"
LK2Chem = LK2.getText = "Chemie"
LK2Bio = LK2.getText = "Biologie"
LK2De = LK2.getText = "Deutsch"
LK2Eng = LK2.getText = "Englisch"
LK2Lat = LK2.getText = "Latein"
LK2Fr = LK2.getText = "Französisch"
LK2Ku = LK2.getText = "Kunst"
LK2Mu = LK2.getText = "Musik"
LK2Gesch = LK2.getText = "Geschichte"
LK2Geo = LK2.getText = "Geographie"
LK2Sk = LK2.getText = "Sozialkunde"
LK2WR = LK2.getText = "Wirtschaft und Recht"
LK2Re = LK2.getText = "Religion ev."
LK2Rk = LK2.getText = "Religion kath."
LK2Spo = LK2.getText = "Sport"

if (LK1M and LK2Ph) or (LK1M and LK2Chem) or (LK1M and LK2Bio)or (LK1M and LK2Spo) or (LK1M and LK2Ku) or (LK1M and LK2Mu)or (LK1Mu and LK2M) or (LK1Ph and LK2M)or (LK1Ph and LK2Chem)or (LK1Ph and LK2Bio)or (LK1Ph and LK2Spo) or (LK1Ph and LK2Ku) or (LK1Ph and LK2Mu) or (LK1Mu and LK2Ph) or (LK1Chem  and LK2M) or (LK1Chem  and LK2Ph) or (LK1Chem  and LK2Ku) or (LK1Chem  and LK2Mu) or (LK1Chem  and LK2Spo or (LK1Mu and LK2Bio))then
    dfs_ABIGK1
    gpr_ABIGK2
elseif (LK1De and LK2Spo) or (LK1De and LK2Eng) or (LK1De and LK2Fr)  or (LK1De and LK2Lat)or (LK1Eng and LK2Spo) or (LK1Eng and LK2De) or (LK1Eng and LK2Fr) or (LK1Eng and LK2Lat) or (LK1Eng and LK2Ku)  or (LK1Eng and LK2Mu)  or (LK1Mu and LK2Eng) or (LK1Fr and LK2Spo) or (LK1Fr and LK2De) or (LK1Fr and LK2Eng) or (LK1Fr and LK2Lat) or (LK1Fr and LK2Ku)  or (LK1Fr and LK2Mu) or (LK1Gr and LK2Spo) or (LK1Gr and LK2De) or (LK1Gr and LK2Eng) or (LK1Gr and LK2Lat) or (LK1Gr and LK2Ku)  or (LK1Gr and LK2Mu) or (LK1Lat and LK2Spo) or (LK1Lat and LK2De) or (LK1Lat and LK2Fr) or (LK1Lat and LK2Eng) or (LK1Lat and LK2Ku)  or (LK1Lat and LK2Mu)  or (LK1Mu and LK2Lat) Then 
    mnt_ABIGK1
    gpr_ABIGK2
elseif (LK1De and LK2Ku) or(LK1De and LK2Mu) or(LK1Mu and LK2De)then
    ABIGK1.additem("Mathematik",0)
    gpr_ABIGK2
elseif (LK1De and LK2Bio) or (LK1De and LK2Chem) or (LK1De and LK2Ph ) or (LK1Ph  and LK2De ) or (LK2Chem  and LK2De )then
    gpr_ABIGK1
    frei_ABIGK2
elseif (LK1M  and LK2Gesch ) or (LK1M and LK2Geo) or (LK1M  and LK2Sk ) or (LK1M  and LK2WR ) or (LK1M  and LK2Re ) or (LK1M  and LK2Rk) or (LK1Sk and LK2M ) or (LK1WR  and LK2M) or (LK1Ph and LK2Gesch) or (LK1Ph and LK2Geo) or (LK1Ph and LK2Sk) or (LK1Ph and LK2WR) or (LK1Ph and LK2Re) or (LK1Ph and LK2Rk) or (LK1Sk and LK2Ph) or (LK1WR and LK2Ph)or (LK1Chem and LK2Gesch) or (LK1Chem and LK2Geo) or (LK1Chem and LK2Sk) or (LK1Chem and LK2WR) or (LK1Chem and LK2Re) or (LK1Chem and LK2Rk) or (LK1Sk and LK2Chem) or (LK1WR and LK2Chem)or (LK1Sk and LK2Bio) or (LK1WR and LK2Bio) then
    dfs_ABIGK1
    'frei_ABIGK2
elseif  (LK1M and LK2Eng) or (LK1M and LK2Lat) or (LK1M and LK2Fr) or (LK1Ph and LK2Eng) or (LK1Ph and LK2Lat) or (LK1Ph and LK2Fr) or (LK1Chem and LK2Eng) or (LK1Chem and LK2Lat) or (LK1Chem and LK2Fr) or (LK1Eng and LK2M) or (LK1Eng and LK2Ph) or (LK1Eng and LK2Chem) or (LK1Eng and LK2Bio)or (LK1Lat and LK2M) or (LK1Lat and LK2Ph) or (LK1Lat and LK2Chem) or (LK1Lat and LK2Bio)or (LK1Fr and LK2M) or (LK1Fr and LK2Ph) or (LK1Fr and LK2Chem) or (LK1Fr and LK2Bio)or (LK1Gr and LK2M) or (LK1Gr and LK2Ph) or (LK1Gr and LK2Bio) then
     gpr_ABIGK1
     'frei_ABIGK2
elseif  (LK1Eng and LK2Gesch) or (LK1Eng and LK2Geo) or (LK1Eng and LK2Sk) or (LK1Eng and LK2WR) or (LK1Eng and LK2Re) or (LK1Eng and LK2Rk) or (LK1Lat and LK2Gesch) or (LK1Lat and LK2Geo) or (LK1Lat and LK2Sk) or (LK1Lat and LK2WR) or (LK1Lat and LK2Re) or (LK1Lat and LK2Rk) or (LK1Fr and LK2Gesch) or (LK1Fr and LK2Geo) or (LK1Fr and LK2Sk) or (LK1Fr and LK2WR) or (LK1Fr and LK2Re) or (LK1Fr and LK2Rk) or (LK1Gr and LK2Gesch) or (LK1Gr and LK2Geo) or (LK1Gr and LK2Sk) or (LK1Gr and LK2WR) or (LK1Gr and LK2Re) or (LK1Gr and LK2Rk) or (LK1Sk and LK2Eng) or (LK1Sk and LK2Lat) or (LK1Sk and LK2Fr) or (LK1WR and LK2Eng) or (LK1WR and LK2Lat) or (LK1WR and LK2Fr)then
     mnt_ABIGK1
     'frei_ABIGK2
elseif   (LK1De and LK2Gesch) or (LK1De and LK2Geo) or (LK1De and LK2Sk) or (LK1De and LK2WR) or (LK1De and LK2Re) or (LK1De and LK2Rk) or (LK1Sk and LK2De) or (LK1WR and LK2De)then
     mnt_ABIGK1 '+extrawursch an ABIGK2 gebunden
end if

end sub
So des is nu der Code. Die dazugehörige Tabelle finet ihr hier.

http://lshdackel.ls.funpic.de/Demo/Kolegstufe.ods

Konnkret möchte ich das alle makros wissen wenn sie LK1 sehn
"Aha das ist doch das selbe wie MyDlg.GetControl("LK1") ."
und für die anderen abkürzungen natürlichdas selbe.

momentan funktioniert es sogar so wie es soll aber ich möchte halt nur nicht in jedem Makro das selbe immer wieder definieren müssen.

PS.: Nochmal danke das ihr euch meinem problem annehmt :D

von Stephan » Di, 15.08.2006 13:27

Indem Du das innerhalb des Modul (jedoch außerhalb eines Makros) ganz oben hinschreibtst, für diesen Ausdruck also:

Code: Alles auswählen

Global MyDlg As Object
Global LK1 As Object
Wobei statt Global wohl auch Dim reichen dürfte und die Notwendigkeit der Definition auch vom Gebrauch abhängt insofern wenn beispielsweise LK1 nur in einem makro gebraucht wird eine globale Definition nicht nötig wäre, wenn bereits MyDlg definiert ist.

Falls das nun nicht klappt postest Du vielleicht wirklich besser den Code, wie Thomas andeutete. Solche Dinge sind nämlich in Kenntnis des Codes schnell zu klären, nur ohne den Code ist es etwas schwierig weil Vieles was man allgemein beachten muß, je nach konkretem Code völlig überflüssig sein kann.




Gruß
Stephan

von LSH_Dackel » Di, 15.08.2006 12:55

THX Toxitom des wars :oops:

aber wie kann ich z.B. so was als global definieren?

Code: Alles auswählen

LK1 = MyDlg.GetControl("LK1")

von Toxitom » Di, 15.08.2006 09:21

Hey Lsh_Dackel,
ich habs jetz so wie du mir geraten hast
Was hast du genau gemacht? Ich glaube, du musst weiter ausholen. Die "Schnipsel" sind wohl zu wenig.
aber ich krieg noch immer den fehler
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Woran kannen des jetz liegen?
Und vorallem wie krieg ichs weg
Tia, dann sind wohl diverse Objektvariablen nicht definiert ;-)
Wo genau tritt der Fehler auf - welche Zeile ist hinterlegt?
Schau mal hier:

Code: Alles auswählen

sub doppeltes_lottchen
for i = 0 to 19
if ABIGK2.getitem(i) = LK1.getText then
ABIGK2.removeitems(i,1) 
...
Ist das Objekt ABIGK2 global definiert?
Ist das Objekt LK1 global definiert?
In dieser Routine werden sie benutzt, aber nicht deklariert oder erzeugt. Also müssen sie gobal existieren. Tun sie das?

Gruss
Thomas

von LSH_Dackel » Di, 15.08.2006 00:10

Stephan danke für die tipps :D
ich habs jetz so wie du mir geraten hast

Code: Alles auswählen

sub doppeltes_lottchen
for i = 0 to 19
if ABIGK2.getitem(i) = LK1.getText then
ABIGK2.removeitems(i,1)
end if
next i
end sub

Code: Alles auswählen

.
.
.
select case LK1.getText
       case = "Mathematik"
       doppeltes_lottchen
       case "Physik"       
       doppeltes_lottchen
.
.
aber ich krieg noch immer den fehler
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Woran kannen des jetz liegen?
Und vorallem wie krieg ichs weg :?:

von Stephan » Mo, 14.08.2006 23:23

Wahrscheinlich hast Du die Variable namens "Fach" nicht deklariert. Soweit wie ersichlich ist das Select-Case in einem anderen Makro und dann gilt die Variable nur dort.
Somit entweder:
schreibe in der Basic-Ide in das betreffende Modul vor alle Makros (außerhalb der Makros ganz oben):

Code: Alles auswählen

Dim Fach As String
oder:
Übergib den Wert von Fach etwa so:

Code: Alles auswählen

sub doppeltes_lottchen(x) 
for i = 0 to 19 
if ABIGK2.getitem(i) = x then 
ABIGK2.removeitems(i,1) 
end if 
next i 
end sub

. 
. 
. 
select case LK1.getText 
       case = "Mathematik" 
       Fach = "Mathematik" 
       doppeltes_lottchen(Fach) 
       case = "Physik" 
       Fach = "Physik" 
       doppeltes_lottchen(Fach) 
. 
. 
. 
Ich weiß jetzt nicht sicher was Du erreichen willst, aber:
wenn der case-Ausdruck immer wörtlich der Ausdruck ist der der Variable Fach zugewiesen werden soll, erscheint mir die Prüfung überflüssig. Du könntest dann eigentlich sinngemäß entweder:

Code: Alles auswählen

if ABIGK2.getitem(i) = LK1.getText 
oder, wenn Du das Makro separat aufrufst:

Code: Alles auswählen

doppeltes_lottchen(LK1.getText)
verwenden.


Hinweis:
das "=" in Ausdrücken wie:

Code: Alles auswählen

case = "Mathematik"


ist überflüssig. Du solltest es eher nicht verwenden, obwohl ich mich überzeugt habe das es im Konkreten geht.
(Nein, bei den anderen Select-Case-Dingen hatte das "=" einen etwas anderen Hintergrund als hier. Da war es sowas wie Vergleichsoperator, hier jedoch eher eine Wertzuweisung - naja keine wirklich korrekte Formulierung)



Gruß
Stephan

Wie kann ich eine Variable Nachdefinieren?

von LSH_Dackel » Mo, 14.08.2006 22:56

Hallo ich bin schooon wieder :oops:
ich habe ein makro bei dem immer wieder die selbe "if Funktion" auftaucht
die sich nur durch den gesuchten Begriff also das Kriterium unterscheidet.
Nun habe ich diese "if Funktion" in eine extra sub (doppeltes_lottchen)
gesteckt und will die Variable später in einem anderen sub ,einer "select
case Funktion" ,definieren aber des fuzt net. Hoffentlich könnt ihr mir helfen.


Code: Alles auswählen

sub doppeltes_lottchen
for i = 0 to 19
if ABIGK2.getitem(i) = Fach then
ABIGK2.removeitems(i,1)
end if
next i
end sub

Code: Alles auswählen

.
.
.
select case LK1.getText
       case = "Mathematik"
       Fach = "Mathematik"
       doppeltes_lottchen
       case = "Physik"
       Fach = "Physik"
       doppeltes_lottchen
.
.
.
THX im Vorraus :P

Nach oben