(Anfänger) Suche Hilfe beim Erstellen einer Rezeptdatenbank
-
-
Hallo, Allison
leider nein.
In welcher Version BCB2006 bzw. der neue BCB2007 sind die denn enthalten?
Denke über ein Update nach und möchte dann natürlich auch das richtige erwerben.Oder gibt es für den BCB6 die Komponente auch einzeln?
Grüsse Stefan
-
hiho
ich hab die Professional Version(nicht privat)
da is alles drin
da findest du infos: http://www.codegear.com/products/cppbuilder
aber mehr weiss ich nicht
mfg allison
-
Guten Morgen,
also erstmal Danke, für die zahlreichen Ideen und Hilfen. Ich denke ich werde es auf dem "simplen" Weg versuchen. Also erstmal mit einer CSV um Suchen, Filter mal selbst zu programmieren.
Jetzt weiß ich aber immernoch nicht wie ich das anstellen soll, das Buch an dem ich mich gehalten habe ist zu Ende, und ich hab vorerst kein Zugang zu neuen Büchern.
Ich bin also auf Euch angewiesen.
Fangen wir doch mal klein an.
Ich erstelle eine .txt Datei in der ich 3-4 Rezeptrubriken eintrage.
(Suppen, Vorspeisen, Hauptgerichte)
Dann erstelle ich ein Formular mit einem TreeView. Dann lade ich diese .txt dahinein.TreeView1->LoadFromFile ("C:\\cp\\rzptdb\\rubriken.txt");
So das hat schon wunderbar funktioniert. Nun habe ich einen Button erstellt "Neue Rubrik".
Wenn ich da raufklicke, soll sich ein Eingabefenster öffnen in dem ich eine neue Rubrik eingebe, und dann wird diese zur .txt hinzugefügt. Wie mache ich das?
-
hiho
du erstellst einfach eine 2. Form, machst ein EditFeld und einen Button drauf
Code:void __fastcall TForm2::OKClick(TObject *Sender) { Form1->TreeView->Items->Add(Form2->Edit->Text); Form2->Close(); }
In Form 1
void __fastcall TForm1::NeueRubrikClick(TObject *Sender) { Form2->Show(); }
(ungetestet)
[edit] sry, hab deine Frage ja gar nicht beantwortet
das hier ersetzt das Obere:void __fastcall TForm2::OKClick(TObject *Sender) { Form1->TreeView->Items->Add(Form2->Edit->Text); Form1->TreeView->SaveToFile(*Dein_Pfad*); Form2->Close(); }
[/edit]
mfg allison
-
1. Ich würd es gern mit einer InputBox machen (die hab ich auch schon)
Nur weiß ich da nicht wie ich das mit dem Add bei einer InputBox machen muss.(2. es muss ja am Ende oder besser gleich in der .txt gespeichert werden.)
ohh war ich wieder zu schnell
-
so weit bin ich jetzt:
void __fastcall TForm1::newrubrikClick(TObject *Sender) { Text1 = InputBox ("Neue Rubrik","Geben Sie die neue Rubrik ein:","neue Rubrik"); TreeView1->Items->Add(Text1); TreeView1->SaveToFile(pfad_rubrik); }
Doch:
Cannot Convert 'System::AnsiString' to 'Comctrls::TTreeNode *'.Type mismatch in parameter 'Node' in call to '_fastcall Comctrls::TTreeNodes::Add(Comctrls::TTreeNode*,const System::AnsiString)'.
Too few parameters in call to '_fastcall Comctrls::TTreeNodes::Add(Comctrls::TTreeNode *, const System::AnsiString)'.
-
hiho
sry für den ****, den ich da geschrieben hab. (ich hab gedacht, es geht so, wie bei einer ListBox)TreeView1->Items->Add(NULL, Text1);
so muss es sein
SChau auch mal unter der BCB-Hilfe nach(such nach "TreeView Add"):void __fastcall TForm1::Button1Click(TObject *Sender) { TTreeNode *Node1; TreeView1->Items->Clear(); // Existierende Knoten entfernen // Stammknoten hinzufügen TreeView1->Items->Add(NULL, "RootNode1"); /* MyTreeNode wird der erste Knoten in der Baumstruktur zugewiesen, dann wird ein untergeordneter Knoten hinzugefügt */ Node1 = TreeView1->Items->Item[0]; TreeView1->Items->AddChild(Node1,"ChildNode1"); // Anderen Stammknoten hinzufügen TreeView1->Items->Add(Node1, "RootNode2"); /* Node1 wird auf RootNode2 zurückgesetzt, dann wird ein untergeordneter Knoten hinzugefügt */ Node1 = TreeView1->Items->Item[2]; TreeView1->Items->AddChild(Node1,"ChildNode2"); /* Node1 wird auf ChildNode2 zurückgesetzt, dann wird ein untergeordneter Knoten hinzugefügt */ Node1 = TreeView1->Items->Item[3]; TreeView1->Items->AddChild(Node1,"ChildNode2a"); /* Hinter ChildNode2a wird ChildNode2 ein weiterer Knoten hinzugefügt */ TreeView1->Items->AddChild(Node1,"ChildNode2b"); // Anderen Stammknoten hinzufügen TreeView1->Items->Add(TreeView1->Items->Item[0], "RootTreeNode3"); }
da steht alles drin(denk ich)
mfg allison
-
Ok, das habeich jetzt ausprobiert, funktioniert alles super:
dann wollte ih es so machen:void __fastcall TForm1::FormCreate(TObject * Sender) { TTreeNode *Node1; TreeView1->Items->Clear(); TreeView1->Items->Add(NULL, TreeView1->LoadFromFile (pfad_rubrik)); }
Doch:
Cannot Convert void to System::AnsiString
Node1 is declared but never used;
-
Hallo
Ja du hast doch schon rausgefunden was du Add übergeben must. Warum räts du wild rum anstatt in die BCB-Hilfe zu schauen? Wenn du LoadFromFile benutzt brauchst du kein Add mehr.
bis bald
akari
-
hiho
wenn das der ganze code für FormCreate ist, sollteTTreeNode *Node1;
weg, weil du das hier nicht brauchst;
mfg allison
-
ja stimmt, bin bisschen durcheinander.
Also neue Rubriken, per Knofdruck funktioniert, auch das speichern in einer txt-Datei klappt.
wie siehts aus mit löschen von Rubriken, dazu würde ich gern ein Kontextmenu nutzen, ist das kompliziert?Auch ein weiteres Problem ist enstanden, wenn ich nach der Eingabe des neuen Rubriknames Abbrechen drücke, erstellt er die neue Rubrik trotzdem, also hab ich versucht:
void __fastcall TForm1::newrubrik2Click(TOBject *Sender) { String Text1; Text1 = InputBox ("Neue Rubrik", "Geben Sie die neue Rubrik ein:", "Rubrikname"); if (IDOK==true) { TreeView1->Items->Add(NULL,Text1); TreeView1->SaveToFile (pfad_rubrik); } }
Aber irgendwie sagt er Condition is always true!
Warum is die always true?
-
hiho
IDOK ist einfach true
da steht irgentwo irgentwas wie das hier:#define IDOK true
mfg allison
-
hiho
machs lieber so:if (Text1 != "") { ... }
mfg allison
-
Hallo
Oder mit anderen Worten : Es ist unnütz zwei Konstanten zu vergleichen. Du must natürlich das Rückgabeergebnis von InputQuery auswerten.
bis bald
akari
-
ja, habs hinbekommen, hab mir schon sowas gedacht, konnte mir aber nicht denken,dass die Variable Text1, den Wert vin IDOK hat.
-
Hallo
konnte mir aber nicht denken,dass die Variable Text1, den Wert vin IDOK hat.
Hat sie ja auch nicht. IDOK hat damit nichts zu tun.
bis bald
akari
-
hiho
konnte mir aber nicht denken,dass die Variable Text1, den Wert vin IDOK hat.
Hat sie auch nicht
IDOK ist einfach true
IDOK = true
nicht Text1
[edit] akari war mal wieder schneller
mfg allison
-
Und wie mache ich das jetzt, das mit der rechten Maustaste über ein Kontextmenü einen eintrag löschen kann?
nehmen ich da OLe-Container(oder wie das Ding heißt)
oder TPopupMenu?
-
Hallo
Du erstellst ein TPopupmenu auf deinem Form und weist dem die notwendigen Einträge und Aktionen zu. Dann must du nur doch die Eigenschaft TTreeView::PopupMenu auf dieses Menu zeigen lassen.
bis bald
akari