CRDBGrid, Problem mit MultiSelect



  • Hallo liebe Forengemeinde,

    hab mal wieder ein kleines Problem mit einem Codeschnipsel. Ich möchte erreichen, dass in meiner Schleife die Anzahl der markierten Einträge aus meinem Grid abgearbeitet werden. Ich hab die Forensuche bereits ausführlich bemüht und nichts gefunden.

    Hier mein Code:

    datenbankkomponenten->Q_automatenverwaltung->First();
    	for (int i = 0;	i < datenbankkomponenten->Q_automatenverwaltung->RecordCount - 1; i++) {
    		if (CRDBGrid1->SelectedRows[i].CurrentRowSelected == true) {
    		// Anweisung
    		ShowMessage("Markierter Eintrag Nr. " + IntToStr(i));
    		}
    	}
    

    Falls jemand einen Rat oder eine andere Lösung parat hat wäre ich sehr dankbar.

    Viele Grüße

    Maik



  • Hallo!

    Kommando zurück, mein aktueller Lösungsansatz sieht so aus und funktioniert fast.

    Fast bedeutet, mein Programm fliegt mir nach dem letzten selektierten Eintrag um die Ohren, bis dahin funktioniert alles.

    Hier mein Code:

    if (CRDBGrid1->SelectedRows->Count > 0) {
    		for (int i = 0;
    			i < datenbankkomponenten->Q_automatenverwaltung->RecordCount - 1;
    			i++) {
    
    			datenbankkomponenten->Q_automatenverwaltung->GotoBookmark
    			((CRDBGrid1->SelectedRows->Items[i]));
    			// Anweisung
    			ShowMessage(datenbankkomponenten->Q_automatenverwaltung->FieldByName
    				("ZULASSUNGSNUMMER")->AsString);
    		}
    	}
    

    Wäre schön wenn mir jemand auf die Sprünge helfen könnte.

    Viele Grüße

    Maik



  • *** push ***



  • Hallo

    Aus deinem gezeigten Ausschnitt ist für uns hier keine Fehlerursache zu erkennen. Benutz den Debugger, um die Ursache weiter einzugrenzen.

    bis bald
    akari



  • Hallo akari,

    danke für deine Antwort. Was jetzt kommt hört sich bisschen peinlich an. Ich würde den Debugger ja gerne benutzen, manchmal gelingt mir das ja auch, wenn er eine Fehlermeldung wirft und ich klicke anschließend auf "Anhalten" springt er ja oftmals zum "fehlerhaften" Code.

    In diesem Fall jedoch bekomme ich die Meldung "Zugriffsverletzung bei Adresse 0047912B......."

    Wie ist in diesem Fall vorzugehen bzw. der Debugger einzusetzen?

    Viele Grüße und danke für die Hilfe

    Maik



  • Hallo

    Du solltest auf jedenfall mit dem Debugger umgehen können, wenn du programmieren willst. Hier findest du eine Anleitung für die wichtigsten Funktionen.

    bis bald
    akari



  • Ich nochmal,

    konnte den Fehler jetzt finden, dieser Code funktioniert nun.

    // Gewaehlte Automaten auswerten
    	if (CRDBGrid1->SelectedRows->Count > 0) {
    		for (int i = 0; i < CRDBGrid1->SelectedRows->Count; i++) {
    
    			datenbankkomponenten->Q_automatenverwaltung->GotoBookmark
    			((CRDBGrid1->SelectedRows->Items[i]));
    			// Gewaehlte Automaten uebernehmen und in Stringliste 'slAbrechnungGewaehlteAutomaten' uebergeben
    			abrechnungsassistent->slAbrechnungGewaehlteAutomaten->Add
    			(datenbankkomponenten->Q_automatenverwaltung->FieldByName
    				("ZULASSUNGSNUMMER")->AsString);
    		}
    	}
    

    Vielen Dank an alle.


Anmelden zum Antworten