DB-Grid mit Spalten aus-/einblenden

Hallo
habe mal wieder ein Problem gefunden.
Und zwar bin ich jetzt soweit, die Daten in einem DBGrid anzuschauen und kann sie da direkt bearbeiten.

Nun folgendes ich möchte alle! Spalten beliebig aus-, einblenden.
Dazu habe ich mir eine Checkbox für jede Spalte erstellt.
Es gibt auch eine Chechbox, die alle anderen Checkboxen an-, bzw. ausklickt.

  1. Wenn ich jetzt alle Spalten mit False ausgeblendet habe, passiert es, das die Spalten nicht mehr eingeblendet werden, auch wenn ich mit True diese wieder einzeln oder alle einblenden will. Warum das so ist keine Ahnung.
    Weiss das jmd, bzw. gibt es einen Befehl um die Ansicht zu aktualisieren, wo muß man den einbauen.

  2. Über die Checkbox, welche die anderen Checkboxen ein-,ausblendet, schreibe ich ja eine Abfrage, wo alle anderen Checkboxen mit If Then auf True oder False gesetzt werden.
    Da ich aber unter den einzelnen Checkboxen als Click-Ereignis, die Abfrage der Spaltenein-, aublendung stehen habe, verzweigt die Hauptcheckbox immer bei jeder Zeile, wo ich die einzelnen Checkboxen auf True/False setze, zu dem Clickereignis der einzelnen Checkboxen, weil es die Änderung wohl als solches ansieht.
    Aber das ist ja ein Fehler irgendwie. Eventuell hängt somit auch das Problem unter 1. damit zusammen.

Wer kann helfen???

Mfg Werner

vielleicht ein Beispiel
Sub Checkbox1_Click()
If Checkbox1.Value=False Then
Checkbox2.Value=False '-> Sprung zum Clickereignis 2.Chkbox???
Checkbox3.Value=False '-> Sprung zum Clickereignis 3.Chkbox???
ElseIf Checkbox1.Value=True Then
Checkbox2.Value=True 'the same
Checkbox3.Value=True 'the same
End Sub

Sub Checkbox2_Click ()
If Checkbox2.Value=False Then
Code Spalte2 ausblenden
ElseIF Checkbox2.Value=True Then
Code Spalte2 einblenden
EndIF
EndSub

Und wie gesagt, sind alle Spalten oder eine der vorderen aus, gehen evtl. die anderen nicht mehr an, durch diesen Code, solange die Verbindung offen bleibt. Öffne ich sie wieder neu, ist alles OK.

Mfg Werner

Hallo Werner,

Nun folgendes ich möchte alle! Spalten beliebig aus-,
einblenden.
Dazu habe ich mir eine Checkbox für jede Spalte erstellt.
Es gibt auch eine Chechbox, die alle anderen Checkboxen an-,
bzw. ausklickt.

  1. Wenn ich jetzt alle Spalten mit False ausgeblendet habe,
    passiert es, das die Spalten nicht mehr eingeblendet werden,
    auch wenn ich mit True diese wieder einzeln oder alle
    einblenden will. Warum das so ist keine Ahnung.
    Weiss das jmd, bzw. gibt es einen Befehl um die Ansicht zu
    aktualisieren, wo muß man den einbauen.

Nicht getestet. Versuch mal .rst.refresh als letzten Befehl.

  1. Über die Checkbox, welche die anderen Checkboxen
    ein-,ausblendet, schreibe ich ja eine Abfrage, wo alle anderen
    Checkboxen mit If Then auf True oder False gesetzt werden.
    Da ich aber unter den einzelnen Checkboxen als Click-Ereignis,
    die Abfrage der Spaltenein-, aublendung stehen habe, verzweigt
    die Hauptcheckbox immer bei jeder Zeile, wo ich die einzelnen
    Checkboxen auf True/False setze, zu dem Clickereignis der
    einzelnen Checkboxen, weil es die Änderung wohl als solches
    ansieht.

Nein, kann ich nicht bestätigen. ich habe gerade mal ein Beispielprogramm geschrieben, die Visible-Eigenschaft zu ändern löst kein Click-Ereignis aus.

Gruß, Rainer

Hallo Werner,

Sub Checkbox1_Click()
If Checkbox1.Value=False Then
Checkbox2.Value=False '-> Sprung zum Clickereignis
2.Chkbox???
Checkbox3.Value=False '-> Sprung zum Clickereignis
3.Chkbox???
ElseIf Checkbox1.Value=True Then
Checkbox2.Value=True 'the same
Checkbox3.Value=True 'the same
End Sub

Sub Checkbox2_Click ()
If Checkbox2.Value=False Then
Code Spalte2 ausblenden
ElseIF Checkbox2.Value=True Then
Code Spalte2 einblenden
EndIF
EndSub

Und wie gesagt, sind alle Spalten oder eine der vorderen aus,
gehen evtl. die anderen nicht mehr an, durch diesen Code,
solange die Verbindung offen bleibt. Öffne ich sie wieder neu,
ist alles OK.

ähmmmm , was willst Du mit dem Code erreichen?

Da steht: Wenn ein Feld ausgeblendet werden soll, sollen andere Felder ein oder ausgeblendet werden. Das ist aber, was Dich stört. …

Also noch mal die Frage, was willst Du erreichen?

Gruß, Rainer

ich ändere die Value-Eigenschaft
Hallo
ich ändere ja auch die Value-Eigenschaft von False auf True und umgekehrt und das löst das Clickereignis aus.
Bitte nochmal prüfen.

Mfg Werner

Komfortabel soll es sein
Hallo
diese eine Checkbox, schaltet alle anderen Checkboxen aus/ein.
Ist somit komfortabler, als alle einzeln aus, einzuschalten.

Die anderen Checkboxen schalten dann wiederum die Spalten aus/ein.

Mfg Werner

Hallo Werner,

  1. Über die Checkbox, welche die anderen Checkboxen
    ein-,ausblendet, schreibe ich ja eine Abfrage, wo alle anderen
    Checkboxen mit If Then auf True oder False gesetzt werden.
    Da ich aber unter den einzelnen Checkboxen als Click-Ereignis,
    die Abfrage der Spaltenein-, aublendung stehen habe, verzweigt
    die Hauptcheckbox immer bei jeder Zeile, wo ich die einzelnen
    Checkboxen auf True/False setze, zu dem Clickereignis der
    einzelnen Checkboxen, weil es die Änderung wohl als solches
    ansieht.

OK, inzwischen verstanden. Ja, das löst ein Clickereignis aus.

Aber das ist ja ein Fehler irgendwie.

Nein, ist kein Fehler. Als Folge stehen dann ja entweder alle oder keine Checkboxen auf true, oder auf False (wozu das eigentlich? Deshalb hatte ich unter ‚ausgeblendet‘ ‚unsichtbar‘ verstanden.)

Auf die Veränderung soll Dein Datagrid doch reagieren, oder habe ich das auch wieder falsch verstanden?

Um alle Felder wieder einzublenden hätte ich einen Button genommen … ‚alles wieder einbelnden‘ … und die Checkboxen als Steuerelementefeld angelegt.

Private Sub Command1\_Click()
 For i = 0 To 2
 Check1(i).Value = Checked
 Next
End Sub

Gruß, Rainer

Gruß, Rainer

wie wird das Komfortabel
Hallo
ja scheint also alles OK, was macht dein Befehl Checked??? Den kenne und verstehe ich so nicht.

Problem bei mir scheint also zu sein, das ich immer eine Prüfung habe, wenn ich einzeln eine Checkbox ändere, und wenn ich durch die MultiCheckboy alle Checkboxen ändere.
Da bei der Multi eh ein Sprung in das Einzelklickereignis erfolgt, kann ich mir die Prüfung bei der Multi sparen, richtig???

So also steht bei jedem Klick-Ereignis eine Prüfung,
ob Checkbox =True dann spalte einblenden
oder Checkbox =False dann spalte ausblenden.

Frage dann nur, warum man beim ausschalten aller Checkboxen und Spalten keine Aktualisierung mehr bekommt.

Mfg Werner

Hallo Werner,

ja scheint also alles OK, was macht dein Befehl Checked??? Den
kenne und verstehe ich so nicht.

der setzt das Häkchen in der Checkbox. Für die Value-Eigenschaft der Checkbox ist bei mit nur Checked oder Unchecked zulässig. Über Dein ‚Fals‘ ‚True‘ habe ich mich gewundert, das funktioniert bei mir nicht.

Problem bei mir scheint also zu sein, das ich immer eine
Prüfung habe, wenn ich einzeln eine Checkbox ändere, und wenn
ich durch die MultiCheckbox alle Checkboxen ändere.
Da bei der Multi eh ein Sprung in das Einzelklickereignis
erfolgt, kann ich mir die Prüfung bei der Multi sparen,
richtig???

Hmmm, nein, denke ich. Wenn Du da schon unbedingt eine Checkbox verwenden willst, sollte da das Häkchen wegkommen, sobald nicht alle angezeigt werden. das Klockereignis darf da die anderen Checkboxen nur verändern, wenn das Häkchen gesetzt wird.

So also steht bei jedem Klick-Ereignis eine Prüfung,
ob Checkbox =True dann spalte einblenden
oder Checkbox =False dann spalte ausblenden.

Frage dann nur, warum man beim ausschalten aller Checkboxen
und Spalten keine Aktualisierung mehr bekommt.

Im Moment keine Erklärung, da würde ich mal
.rts.refresh und DBGrid.refresh probieren.
Ein’s von beiden muß eine Aktualisierung auslösen.

Gruß, Rainer