Login...mitnahme von Benutzername und Passwort!
-
@Black: nein das mit dem 100011 hab ich schon verstanden!
@fragg: langsam leuchtet mir auch dein Beispiel...aber wo kann ich denn spezielle Buttons bestimmen!
Zum beispiel hat der mit wenigsten rechte also 1000000000000, das heißt bei ihm ist Button1 enabled!
der mit der nächsten stufe der Rechte hat zusätzlich Button 7 enabled:Wäre das 100000100000?, und woher weiß deine konstruktion, das Button 7 gemeind ist?
-
dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48;Aktiviert oder deaktiviert den entsprechenden Button.
Auf Array Index zugreifen: ur[++co]
die -48 ziehe 48 von dem ergebnis ab.
-
for(int i=0;i<Form2->ComponentCount&&co<ur.Length();i++) { if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button1") { dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48; } }
-
Würde das bedeuten wenn mein String so aussieht: 110011100000, das er durch das ur automatisch Button 1,2,5,6,7 enabled?
Und was würde passieren wenn ich zB keinen Button 7 habe (durch löschen oder so?), nimmt er dann anstelle der 7 den 8 Button? das wäre ja schlecht!
-
Würde das bedeuten wenn mein String so aussieht: 110011100000, das er durch das ur automatisch Button 1,2,5,6,7 enabled?
Ja.
110011100000Button1->Enabled=ursprünglicher Zustand.
Button2->Enabled=true;
Button3->Enabled=true;
Button4->Enabled=false;
Button5->Enabled=false;
Button6->Enabled=true;
Button7->Enabled=true;
Button8->Enabled=true;
Button9->Enabled=false;
Button10->Enabled=false;
Button11->Enabled=false;
Button12->Enabled=false;Und was würde passieren wenn ich zB keinen Button 7 habe (durch löschen oder so?), nimmt er dann anstelle der 7 den 8 Button? das wäre ja schlecht!
Ja.
Die Ausnahmen müsstest du zwangsläufig mit if bzw switch abfangen.
-
Button1->Enabled=ursprünglicher Zustand.
Button2->Enabled=true;
Button3->Enabled=true;
Button4->Enabled=false;
Button5->Enabled=false;
Button6->Enabled=true;
Button7->Enabled=true;
Button8->Enabled=true;
Button9->Enabled=false;
Button10->Enabled=false;
Button11->Enabled=false;
Button12->Enabled=false;bezogen auf
for(int i=0;i<Form2->ComponentCount&&co<ur.Length();i++) { if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button1") { dynamic_cast<TButton*>(Form2->Components[i])->Enabled = ur[++co]-48; } }
-
Den Button Nr. 7 auslassen.
if (Form2->Components[i]->ClassNameIs("TButton")&&Form2->Components[i]->Name!="Button7")
-
Ok das abfangen wäre sicher kein problem!
Ich hab nun mal das hier probiert:
void __fastcall TForm1::Button3Click(TObject *Sender) { Form3->Query1->Close(); Form3->Query1->SQL->Clear(); Form3->Query1->SQL->Add("select * from Login where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';"); Form3->Query1->Open(); if (!Form3->Query1->Eof) { if (Form3->Query1->FieldByName("Rechte")->AsBoolean==true) { //ShowMessage ("Gut"); Form4->Show(); String str = Form3->Query1->FieldByName("MARechte")->AsString; Form4->Button1->Enabled = (str[0] == "1") ? true : false; Form4->Button2->Enabled = (str[1] == "1") ? true : false; Form4->Button3->Enabled = (str[2] == "1") ? true : false; Form4->Button4->Enabled = (str[3] == "1") ? true : false; Form4->Button5->Enabled = (str[4] == "1") ? true : false; Form4->Button6->Enabled = (str[5] == "1") ? true : false; Form4->Button7->Enabled = (str[6] == "1") ? true : false; Form4->Button8->Enabled = (str[7] == "1") ? true : false; Form4->Button9->Enabled = (str[8] == "1") ? true : false; Form4->Button10->Enabled = (str[9] == "1") ? true : false; Form4->Button11->Enabled = (str[10] == "1") ? true : false; Form4->Button12->Enabled = (str[11] == "1") ? true : false; Form1->DestroyWnd(); //Form3->Table2->Open(); } } else { ShowMessage ("Falscher Benutzername oder falsches Passwort"); Edit1->SetFocus(); } }Und da kommt Fehler: Konvertierung von Char nach Char nicht möglich?!
Hab ich was übersehen?
-
Form4->Button1->Enabled = (str[0] == '1') ? true : false; etc.
-
ich zitiere mich mal selbst...

Linnea schrieb:
DJ BlackEagle schrieb:
PS: li... ein Array fängt immer mit 0 an, nicht mit 1.
Strings sind 1 basiert ...
also lieber bei
Form4->Button1->Enabled = (str[1] == '1') ? true : false;beginnen
-
Für AnsiString
str[1]für std::string
str[0]
-
Danke ihr beiden....das funktioniert jetzt!
Werde dann mal das andere Beispiel von Fragg testen...weil das für weitere Komponenten anscheinend eleganter ist!
-
Und da hab ich gleich noch eine Frage:
Da ich ja als Admin im Prog auch rechte anlegen will und ändern...also wie kann ich zB an bestimmte positionen in den string schreiben?
Beispiel:
Ich hab für jeden Button eine Checkbox...und ich möchte Button7 aktivieren..wie müsste also das OnCklick Ereigniss der Checkbox aussehen, das er mir eben an die siebte stelle eine 1 schreibt...bzw von 0 auf 1 ändert?
-
Eins verstehe ich nicht ganz. Wieso macht ihr das hier
Form4->Button1->Enabled = (str[1] == '1') ? true : false;so kompliziert.
Das hierForm4->Button1->Enabled = (str[1] == '1');reicht doch auch;
Desweiteren könnte man doch die Nummern der Buttons auch in deren Tag schreiben. Da bräuchtet ihr keine Namen abzufragen.
-
String ur="000000000000";// String Aus Datenbank ur[7]='1'; //... In Datenbank schreiben
-
also müsste ich es so machen:
if (CheckBox->Checked) { Form3->Query1->??? und jetzt?? Ein FieldByName(""), oder wie bekomm ich den String per Syntax rein? }Oder wo muss ich das ur[7]='1' hinschreiben?
-
Am besten unterhält man sich mit einer Datenbank in einer Sprache die sie versteht.(SQL)
Für ändern UPDATE ...
Für löschen DELETE ...
-
Ja schon klar...
könntest mir bitte mal ein beispiel geben bitte...wie ich in den String reinschreiben kann...den syntax weiß ich nich!
Also einfach mal ein Codebeispiel?!
-
Hier ist genau das gleiche.
http://www.c-plusplus.net/forum/viewtopic.php?t=93756
-
Hmm...das is schon klar....ich weiß nur mit dem nix anzufangen:
String ur="000000000000";// String Aus Datenbank ur[7]='1'; //... In Datenbank schreibenkannst mir das mal in so ein ähnliches beispiel wie bei dem anderen Thread geben?!
