![]() |
formular daten an memo übergeben...
hallo leute,
Folgendes: Ich habe: name: [edit1] vorname: [edit2] strasse: [edit3] ... ... usw. ich möchte jetzt, dass der user seine daten eingeben kann und dann auf button1 klicken. Dann erscheint eine form2 mit memo1 wo dann die daten stylisch im bbcode angezeigt werden. jetzt so wie ich das hier habe ist es ja kein problem. Nur bei meinem echten projekt sind das viel mehr Daten. Theoretisch wäre das ja auch kein probelem aber ich muss immer damit rechnen dass er ein Feld lehr lässt, welches dann auch nicht im bbcode enthalten sein darf, was dann auch wieder ein problem mit den zeilenumbrüchen hervorrufen würde. wie löse ich das jetzt am besten? bei jedem feld ne if abfrage ist ja auch blöde!? Und dann auch noch ich habe mehrere groupboxes, wenn jetzt keines der felder in einer groupbox ausgefüllt ist, soll die ganze groupbox nicht im bbcode enthalten sein. Was auch noch ein Problem ist, ich möchte dass der user eigene styles laden kann. Ich kann das natürlich auch kompliziert machen:
Delphi-Quellcode:
var name:string;
vorname:string; strasse:string; begin name:='[b]Name: [/b]'+edit1.text+#13#10; vorname:='[b]Vorname: [/b]'+edit2.text+#13#10; strasse:='[b]Strasse: [/b]'+edit3.text+#13#10; if edit1.text='' then name:=''; if edit2.text='' then vorname:=''; if edit3.text='' then strasse:=''; form2.RichEdit1.Text:=name+vorname+strasse; form2.ShowModal; end bitte helft mir ich habe einfach noch nicht die perfekte Idee gehabt.. :cry: sorry schon wieder so viel text... ich hoffe ihr könnt mir trotzdem helfen mfg headi |
Re: formular daten stylisch in memo einfügen...
Warum nicht einfach:
Delphi-Quellcode:
:?:
if edit1.text<>'' then
Form2.RichEdit1.Lines.Add('[b]Name: [/b]'+edit1.text); if edit2.text<>'' then Form2.RichEdit1.Lines.Add('[b]Vorname: [/b]'+edit2.text); if edit3.text<>'' then Form2.RichEdit1.Lines.Add('[b]Strasse: [/b]'+edit3.text); Oder schreib dir doch einfach eine Funktion:
Delphi-Quellcode:
Dann kannst du ganz einfach eine Zeile mit AddBBCode('Name',edit1.Text) hinzufügen bzw. halt nicht.
procedure TFOrm1.AddBBCode(Name, Text: String);
begin if Text<>'' then Form2.RichEdit1.Lines.Add('[b]'+Name+'[/b]:'+Text); end; |
Re: formular daten stylisch in memo einfügen...
Zitat:
wie ist das mit
Delphi-Quellcode:
macht das das gleiche wie
if edit3.Text<>'' then
Delphi-Quellcode:
also wegen den leerzeichen?
if (TrimLeft(Edit3.Text) = '' then)
Und wie ist das wenn ich jetzt 3 groupboxes habe? wenn ich jetzt für einen zeilenumbruch nach einer groupbox jedes mal richedit1.lines.add(zeilenumbruch) schreiben würde, dann aber z.B. die groupbox in der mitte ganz leer wäre dann würden sich ja die zeilenumbrüche stauen?! Achja wie überprüfe ich ganze groupboxen sammt feldern also wie schon gesagt ist kein feld ausgefüllt fällt groupbox weg ist ein feld ausgefüllt wird groupbox hinzugefügt? Dann zu der funktion: Ich glaube das wäre ein bisschen kompliziert, da mein name ja in einem label steht und der text in einem edit, da müsste ich ja zuerst immer ein label zu einem edit hinzufügen. Abgesehen davon würde dann die formation (zeilenumbrüche...) nicht mehr wirklich gut gehen oder? EDIT: achso hab noch was übersehen... mit funktionen hab ich mich halt noch nicht so beschäftigt :lol: das sieht ja besser aus als ich dachte vielen dank schon mal mfg headi |
Re: formular daten stylisch in memo einfügen...
Moin,
ich habe da mal eine Frage. Was heißt stylisch? Meinst du vielleicht stylistisch? Oder würde man das noch anders betiteln? Aber stylisch ist irgendwie komisch. Oder sehe ich das völlig falsch? Dieser Titel zur Zeit auf der Hauptseite, da bekommt man ja Augen****. Leicht verwunderte Grüsse Thorsten |
Re: formular daten stylisch in memo einfügen...
Zitat:
|
Re: formular daten stylisch in memo einfügen...
Ja, ist schon ok. Das habe ich mir dann, nach dem Lesen deines Eingangthreads auch gedacht. Nur ist stylisch richtig und gibt das überhaupt?
Man kann sich doch nicht einfach Wörter ausdenken und dann schreiben was man eigentlich meint. Wie wäre es mit einem Wort, das dann auch das beschreibt, was man meint. Naja, ist auch egal. Ich wollt nur mal fragen. Nichts für ungut Thorsten |
Re: formular daten stylisch in memo einfügen...
also ich denke ich kann das gut mit der funktion von jim_raynor lösen.
Nur jetzt bleibt immer noch die frage:
mfg headi |
Re: formular daten an memo übergeben...
1. Wenn du doppelte Leerzeilen löschen willst, kannst du einfach die einzelnen Zeilen am Ende durchgehen und doppelte Löschen.
Delphi-Quellcode:
2. <> = unglich ;) also das gleiche wie if not (Edit1.Text='') then ...
// Minus zwei, da ich immer auf die nächste Zeile schaue
for Dummy:=Form2.RichEdit1.Lines.Count-2 downto 0 do begin if (Form2.RichEdit1.Lines[Dummy]='') and (Form2.RichEdit1.Lines[Dummy+1]='') then Form2.RichEdit1.Lines.Delete(Dummy) end; |
Re: formular daten an memo übergeben...
Zitat:
Delphi-Quellcode:
machen.
if (TrimLeft(Edit.Text) = '' then
Die frage ist ja wie mache ich das mit den zeilen umbrüche... hmmm... ich versuche hier das nochmals zu erklären: also ich habe drei groupbox und nach jeder kommt eine lehre zeile also ein zeilenumbruch ------------- groupbox1 ------------- leere zeile1 ------------- groupbox2 ------------- leere zeile2 ------------- groupbox3 ------------- leere zeile3 ------------- so ich habe jetzt in jeder groupbox felder, wenn jetzt am schluss kein feld in einer groupbox ausgefüllt ist, wird dieses nich miteingezogen, im beispiel jetzt kein feld von groupbox2 hat einen inhalt das bedeuted groupbox2 fällt weg... ------------- groupbox1 ------------- leere zeile1 ------------- ------------- leere zeile2 ------------- groupbox3 ------------- leere zeile3 ------------- da jetzt groupbox2 fehlt kommen leere zeile1 und 2 aufeinander. ich möchte jetzt da aber nur eine leere zeile. so ich hoffe ihr habt das so verstanden. mfg headi |
Re: formular daten an memo übergeben...
Sieh die mal die Property
![]() ![]()
Delphi-Quellcode:
In das array Prefixes schreibst du alle "Datenbezeichner" rein. Ist natürlich noch nicht ganz druckreif der Code, aber ich denke wenn du das überhaupt so machen möchtest, müsstest du es relativ leicht auf deine Bedürfnisse (insbesondere mehrere Groupboxes) anpassen können. :)
const Prefixes: array[0..???] of string = ('Name', 'Vorname', ...);
var i,j:integer; begin j := 0; for i := 0 to (Groupbox1.ControlCount - 1) do // Controls in Groupbox1 durchlaufen if Groupbox1.Controls[i] is TEdit then begin // Nachsehen ob es ein Editfeld ist AddBBCode(Prefixes[j], (Groupbox1.Controls[i] as TEdit).Text); // Wenn ja, mit der Prozedur von jim_raynor hinzufügen inc(j); // Und nächstes mal den nächsten Prefix-String nehmen end; end; |
Re: formular daten an memo übergeben...
Zitat:
jetzt könnte man irgendwie vielleicht deine funktion so umbauen dass es alle diese drei compos überprüft, und dass ich dann aber doch noch von hand z.B. " AddBBCode('name', feld)" hinzufügen kann. Gut wäre natürlich wenn ich irgendwie in kurzschreibweise alle felder die überprüft werden sollen hinzufügen kann. Beispiel (edit1, edit2, edit3, edit4, combobox1, combobox2, memo1,) Ich hoffe das kann man irgendwie einfach realisieren mfg headi |
Re: formular daten an memo übergeben...
Hmm, möglich ist es immer noch, aber es büßt einiges von seiner Eleganz ein :(
Delphi-Quellcode:
function GetValue(AControl: TControl): string;
begin // So und jetzt wird es hässlich: // Jeweils für das spezifische Control den richtigen Text raussuchen: Result := ''; if (AControl is TEdit) then begin Result := (AControl as TEdit).Text; exit; end; if (AControl is TMemo) then begin Result := (AControl as TMemo).Text; exit; end; if (AControl is TCombobox) then if (AControl as TCombobox).ItemIndex <> -1 then begin Result := (AControl as TCombobox).Items[(AControl as TCombobox).ItemIndex]; exit; end; end; const Prefixes: array[0..???] of string = ('Name', 'Vorname', 'Straße', ...); var i,j:integer; begin j := 0; for i := 0 to (Groupbox1.ControlCount - 1) do // Controls in Groupbox1 durchlaufen with Groupbox1 do if (Controls[i] is TEdit) or (Controls[i] is TMemo) or (Controls[i] is TCombobox) then begin // Jetzt auf drei Sachen testen AddBBCode(Prefixes[j], GetValue(Controls[i])); // Die Funktion von oben aufrufen um den jeweils richtigen String zu erhalten inc(j); // Und nächstes mal den nächsten Prefix-String nehmen end; end; Zitat:
Dann sähe die entsprechende Zeile so aus:
Delphi-Quellcode:
Um direkt abzuspeichern welche Komponenten überhaupt überprüft werden fällt mir jetzt nichts elegantes ein. Normalerweise packe ich solche Dinge immer in ein konstantes Array (wie oben das Prefix-Array), aber das funktioniert hier natürlich nicht. :?
AddBBCode(Prefixes[Controls[i].Tag], GetValue(Controls[i])); // Wenn ja, mit der Prozedur von jim_raynor hinzufügen
|
Re: formular daten an memo übergeben...
also meine form ist vielleicht so
edit1 edit2 groupbox1 |______edit3 |______edit4 |______edit5 und wenn ich das ausgeben möchte sieht das dann vielleicht so aus edit1 edit2 edit3 Groupbox als titel edit4 edit5 wenn ich das jetzt überprüfe, muss oben edit3 ja nicht überprüft werden, da es dann bei der ausgabe sowieso nicht mehr unter groupbox ist. könntest du mir deinen code vielleicht noch ein bisschen genauer erklären und wie ich den dann aufrufen kann? Achja der sinn der ganzen sache ist ja zu überprüfen ob ein feld ausgefüllt ist und zu überprüfen ob groupbox als titel überhaupt angezeigt werden muss. gibts da nich irgendwas in dieser art:
Delphi-Quellcode:
Ich denke man könnte da irgendwie alle ausgefüllten felder in einer stringlist speichern oder so...
if edit1, edit2, edit3, checkbox1, memo1 = standart then
varAusgabe:=''; else varAusgabe:=groupBox1.caption+Alleausgefülltenfelder; hab da noch nicht so viel erfahrung in dieser weise so vielen dank schon mal für deine mühe mfg headi |
Re: formular daten an memo übergeben...
Hallo headi,
jetzt wird es langsam kompliziert. Mein ursprünglicher Code ist darauf ausgerichtet, dass es sich nur um Edit-Felder handelt, die der Reihe nach hinzugefügt werden. Dann hast du mich darauf hingewiesen, dass auch andere Controls vorkommen können, das hat den Code schon mal unschöner gemacht. Und jetzt kommt noch hinzu, dass evtl die Reihenfolge "durcheinander" sein kann. Man kann den Code immer noch darauf anpassen, aber es wird noch einmal uneleganter werden. Sprich: vielleicht bin ich beim Posten damals einfach von falschen Voraussetzungen ausgegangen, und dieser Ansatz passt eigentlich gar nicht so gut zu deinem Problem. Aber ich mache dir einen Vorschlag: Poste doch einfach mal deinen Code (oder häng die entsprechende Unit an) und ich werd mal sehen, ob mir etwas einfällt, wie man das ganze evtl. ein bisschen kompakter machen kann. :) PS: Wenn du postest, wäre auch ein Screenshot des entsprechenden Forms von Nutzen. |
Re: formular daten an memo übergeben...
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe mal schnell eine beispiel form erstellt (siehe anhang)
Die Ausgabe soll wie folgt geschehen: [sieze=15]Name[/sieze] ![]() grösse EXTRA INFORMATIONEN Beschreibung:blabalbalbal du kannst mit diesem programm sehr viel machen... Version:version2 beta5 build24 wie du siehst wenn ich beschreibung und version nicht ausfülle soll auch "EXTRA INFORMATIONEN" nicht dortstehen. Naja halt so weiter... Ich hoffe du verstehst nun was ich meine und kannst mir nochmals helfen :-D vielen dank nochmals für deine hilfe :thumb: mfg headi |
Re: formular daten an memo übergeben...
Für eine Oberfläche wie diese ist mein ursprünglicher Code kaum noch sinnvoll abzuwandeln. Da es sich ja auch nur um relativ wenige Komponenten handelt, ist es da vermutlich besser einfach alles "von Hand" einzutickern.
Solche Abkürzungen funktionieren ja immer nur, wenn jedesmal mehr oder weniger dasselbe getan werden muss. Aber hier ist ja alles unterschiedlich, ergo kann man das kaum automatisieren. Naja, tut mir leid... :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz