Entwickler-Ecke

Sonstiges (Delphi) - Text in Unit schreiben und in Memo ausgeben, wie geht das?


Panther - Do 29.01.04 19:08
Titel: Text in Unit schreiben und in Memo ausgeben, wie geht das?
Hi Leute,
(Ich bin noch ziemlicher Anfänger in Delphi)

Ich habe ein Problem: Ich hab ein Programm bei dem man erst einen wert angeben muss der dann in einen Code eingefügt wird, wenn man auf einen Button klickt.
Also erst kommt ein Stück Code (CSS), dann kommt der Wert und dann wieder CSS und so weiter.
Wie bekomm ich den ersten Teil des Codes in das Memo?
Bisher hab ich das so gemacht das ich erst ein Label mit dem Code erzeugt hab und dann habe ich in die Unit geschrieben das wenn man auf den Button klickt der Inhalt des Labels in das Memo kommt.
Aber das is ja eigentlich Schwachsinn weil dann ja das ganze Form voll mit Labels ist!
Jetzt meine Frage: Kann ich die einzelnen Teile des Codes irgenntwie in die Unit schreiben?

Ich hoffe ihr versteht mein Problem und könnt mir helfen!
Danke schon mal im Vorraus!


StefanH - Do 29.01.04 19:47

zeig mal deinen Code mit dem Wert, dann kann man dir vielleicht eher helfen


Chatfix - Do 29.01.04 20:00

Speichere doch Deine Code-Teile ind Strings.
Dann könntest Du Sie ja so wieder zusammen basteln:


Delphi-Quelltext
1:
2:
3:
4:
5:
var String1, String2: String;

String1 := 'Hallo, du hast "';
String2 := '" in das Feld eingegeben.';
Label1.Caption := String1 + Edit1.Text + String2;


Ich hoffe Du hast das so gemeint...


Popov - Do 29.01.04 22:43

Versuch es mal so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var String0, String1, String2: String;

String1 := 'Hallo, du hast "';
String2 := '" in das Feld eingegeben.';
String0 := String1 + Edit1.Text + String2;

// Wenn du es an Label1 übergeben willst
Label1.Caption := String0;

// Wenn du es an Memo1 übergeben willst
Memo1.Lines.Add(String0);


Memo1.Lines.Add fügt immer eine neue Zeile dazu. Wenn du Memo1 löschen willst, dann mit Memo1.Lines.Clear;


Panther - Fr 30.01.04 14:50
Titel: Danke!
Hallo,

Danke für die Tipps,
ich probier das gleich mal aus aber das sieht so aus als würde es funktionieren! *g*


Panther - Fr 30.01.04 20:19

Danke nochmal, es hat alles geklappt!
Aber ich habe noch ein paar Fragen:

1. Wie kann ich in einem String einen Zeilenumbruch machen? Also das ich einen String hab und der eine Teil in einer und der andere in der nächsten Zeile ist!

2. Wie kann ich das machen, das sich auf klick die Edit's und das Memo leeren?

3. Wie sind die 'Befehle' für Ausschneiden, Kopieren und Einfügen? Also wie kann ich das in meinem Menü machen die Einträge hab ich schon aber ich brauch den code!

4. Wie kann ich in so einem Menü einen Link zu einer Homepage machen?

5. Wie kann ich es machen das man mein Programm nicht vergrößern kann?

So, das wars erstmal, ich hoffe ihr könnt mir helfen und meine Beschreibungen waren genau!


StefanH - Fr 30.01.04 20:34

1.:

Delphi-Quelltext
1:
MyString:= 'blubb'+#10#13+'lab                    

(#10#13 = Enter)

2.: es gibt TEDit.Clear und TMemo.Lines.Clear

3.:
Ausschneiden : TEdit (o. TMemo).CutToClipboard
Einfügen: PasteFromClipboard
Kopieren: CopyToClipBoard

4.: Suche in: Delphi-Forum, Delphi-Library SHELLEXECUTE bzw. in den FAQs

5.: setz BorderStyle im Oberinspektor auf "bsSingle"

Stefan :nut:


Panther - Fr 30.01.04 21:00

Ok, danke schön! Ich probiers gleich aus!


Brueggendiek - Sa 31.01.04 13:52

Hallo!

Kleiner Fehler:
StefanH hat folgendes geschrieben:
(#10#13 = Enter)


Zunächst einmal bevorzuge ich bei Character-Werten die Sedezimal-Darstellung. Unter #$0D kann ich mir mehr vorstellen als unter #13!

Der Zeilenumbruch ist Wagenrücklauf (CR) - Zeilenvorschub (LF)!
CR: #$0D oder #13
LF: #$0A oder #10.

Es muß also richtig heißen: #$0D#$0A oder #13#10 !

Gruß

Dietmar Brüggendiek


Panther - Sa 31.01.04 15:51

Hallo,

Danke schön, das hat (alles) geklappt aber ich habe immer noch ein par Fragen:

1. Wie kann ich bei CutToClipboard (Paste..., Copy...) mehrere Edits nehmen, oder muss ich das jedesmal neu schreiben? Das verbraucht so viel Platz!

2. Das mit dem bssingle ging nicht! Bei bsSizeToolsWin und bsToolWindow war zwar nur noch das kreuz da aber ich will eigentlich bsSingle bloß ohne das "Viereck" (Vergrößerung)! Also das das gesperrt ist! Wie geht das?

3. Wenn ich zwei Fenster hab, kann ich dann auch z.B. ein Memo das in dem zweiten Fenster ist benutzen? Also das wenn man auf einen Button (erstes Fenster) klickt öffnet sich ein Fenster und der Code kommt in das Memo (in dem Fenster 2)?

4. Adobe Acrobat Reader hat ja im Menü (oben) Icons vor den Menüeinträgen. Im Ordner vom 'Reader gibt es aber keine Icons/Bilder, wo kommen also die Icons her? Ich will nämlich auch Icons davor haben aber nicht so viel Speicherplatz verwenden! Geht das?

So das wars erst mal! Ich hoffe könnt mir helfen!


StefanH - So 01.02.04 10:40

1.: kommt darauf an, was du machen willst...
2.: du musst bei "borderIcons" ~Maximize auf false stellen
3.: ja, geht :D such einfach mal....
4.: eine ImageList auf die Form legen, bilderchen rein, im Menuü bei "IMages" die List auswählen, und dann beim Menüeintrag bei "ImageIndex" das bild aus dnken...


Panther - So 01.02.04 11:18

Zu 1. Ich will das bei allen drei verkürzen! So:
Ausschneiden : Edit(all).CutToClipboard
Einfügen: Edit(all).PasteFromClipboard
Kopieren: Edit(all).CopyToClipBoard
Bei (all) soll dann was hin womit ich dann alles Edits auschneiden, kopieren und einfügen kann!

Zu 3. Ich hab gesucht, aber nichts gefunden! Kann mir vielleicht jemand anderes helfen? Oder hat jemand ne Idee?

Noch ne Frage: Wo kann die "Standart" -Icons (Neu, Ausschneiden, Kopieren, Einfügen) herbekommen?

Danke schon mal im Vorraus!


StefanH - So 01.02.04 11:29

zu zu 1.:du willst also alle edit - felder - texte zusammen in das ClipBoard???
zu zu 3.: erkär ma genauer

wenn du dir eine MDI-Anwendung von Delphi erstellen lässt, sind die in eine ImageList drin...


Panther - So 01.02.04 14:26

Zu 1.: Ich will das man bei allen Edits den Text auschneiden kann, so sieht es normal aus:

Delphi-Quelltext
1:
2:
3:
4:
Edit1.CutToClipboard;
Edit2.CutToClipboard;
Edit3.CutToClipboard;
Edit4.CutToClipboard;

Ich will das man nicht für jedes EDit eine Zeile schreiben muss! Geht das?

Zu 3.: In dem ersten Fenster muss man sieben Edits ausfüllen und dann auf OK klicken. Wenn man auf Ok geklickt hat soll sich ein neues Fenster öffnen mit einem Memo, in dieses Memo soll ein Code der sich aus den Texten in den Edits ergibt! Ich hab das bisher nur so hinbekommen, dass das Memo auch in Fenster eins ist!

Ich hoffe ihr könnt mich jetzt verstehen!? Wenn nicht, sorry! Aber ich weiß nicht wie ich das beschreiben soll![/delphi]


StefanH - So 01.02.04 19:49

zu 1.: weißt du, was dein Code macht?
er schneidet den Text von edit4 in die Zwischenablage... :lol:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses ...,ClipBrd;
...

procedure Auschneiden(Sender: TObject);
var i: integer;
     s: string;
begin
 for i:=1 to 7 do //7 edits....
 begin
  s:= s + (FindComponent('Edit' + IntToStr(i)) as TEDit).Text;
  (FindComponent('Edit' + IntToStr(i)) as TEDit).Clear;
 end;
ClipBoard.AsTExt:= s;
end;


zu 3.:

ok, also MEmo leigt auf Form2 mit dem Namen Memo1:

Code für Unit1 = 7 edits

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
implemation
uses Unit2;

...

procedure Button1Click(Sender: TObject);
begin
Form2.Memo1.Lines.Add('blubb'); //Form2.Memo1 ...
end;


Stefan


Panther - Mo 02.02.04 15:48

Oh dann hab ich mich wohl vertan! Sorry!
Danke für die Antworten aber weiß noch jemand was zu dieser Frage:

Wo kann die "Standart" -Icons (Neu, Ausschneiden, Kopieren, Einfügen) herbekommen?


StefanH - Mo 02.02.04 16:09

Delphi starten >> neu >> Projekte >> MDI-Anwendung

und dann ist da eine ImageList, und da sind die drin.