Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Richedit, den Anfangstext löschen?
wurstuk - Sa 11.10.08 13:35
Titel: Richedit, den Anfangstext löschen?
Hi
ähm ich wollte gerade mal versuchen ein Programm zu schreiben was so ähnlich ist wie der
Texteditor von Windows bloß viel einfacher^^
und da hab ich mir gedacht das ich für das Feld wo mann was rein schreibt Richedit
nehmen könnte aber i-wie finde ich im Objektinspektor nichts wo mit mann den Anfangstext ändern kann...
also bei Edit steht da dann ja immer Edit1 und bei einem Label Label1 und bei Richedit
dann halt richedit1...
könnte mir i-jemand sagen wie ich das weg bekomme?
edit: kann mann vllt auch i-wie eine Scrollbar ein bauen das wenn mann mehr als das Fenster groß ist schreibt
mann einfach nach oben scrollen kann und nicht mit den Pfeiltasten jede reihe abklappern muss?
Moderiert von
Gausi: Topic aus Sonstiges (Delphi) verschoben am Sa 11.10.2008 um 14:41
DiamondDog - Sa 11.10.08 13:40
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin Richedit1.Text:=''; end; |
So würde ich das machen.
Weiß aber nicht ob das die Richtige Lösung dafür ist.
Mfg Dog
wurstuk - Sa 11.10.08 13:42
cool Danke es klappt :D
DiamondDog - Sa 11.10.08 13:45
Nix zu Danken, aber wie gesagt weiß nicht ob das die richtige Lösung dafür ist.
Aber so lange es klappt sollte es ja ok sein ;)
wurstuk - Sa 11.10.08 14:01
Hmmm soweit bin ich bis jezzt, aber ich hab da noch ein Problem immer wenn ich eine Datei öffne wird
nur die erste Zeile geladen der Rest bleibt weg... ich glaube es liegt an nr, aber ich weiß nicht was ich
ihr zuordnen soll?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus;
type TForm1 = class(TForm) MainMenu1: TMainMenu; OpenDialog1: TOpenDialog; PrintDialog1: TPrintDialog; SaveDialog1: TSaveDialog; RichEdit1: TRichEdit; Datei1: TMenuItem; ffnen1: TMenuItem; Speichern1: TMenuItem; Drucken1: TMenuItem; Schlieen1: TMenuItem; procedure FormCreate(Sender: TObject); procedure ffnen1Click(Sender: TObject); private public end;
var nr: integer; diagnose: tstringlist; Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin diagnose := tstringlist.Create; richedit1.Text := ''; end;
procedure TForm1.ffnen1Click(Sender: TObject); begin opendialog1.Execute; diagnose.loadfromfile (opendialog1.filename); richedit1.Text := diagnose.Strings[nr]end;
end. |
Delete - Sa 11.10.08 14:09
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus;
type TForm1 = class(TForm) MainMenu1: TMainMenu; OpenDialog1: TOpenDialog; PrintDialog1: TPrintDialog; SaveDialog1: TSaveDialog; RichEdit1: TRichEdit; Datei1: TMenuItem; ffnen1: TMenuItem; Speichern1: TMenuItem; Drucken1: TMenuItem; Schlieen1: TMenuItem; procedure FormCreate(Sender: TObject); procedure ffnen1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin richedit1.Clear; end;
procedure TForm1.ffnen1Click(Sender: TObject); begin if opendialog1.Execute then richedit1.Lines.loadfromfile(opendialog1.filename); end;
end. |
Die globalen Variablen Diagnose und nr brauchst Du nicht (nr war eh nicht initialisiert).
LexXis - Sa 11.10.08 14:28
Titel: Re: Richedit, den Anfangstext löschen?
wurstuk hat folgendes geschrieben : |
...aber i-wie finde ich im Objektinspektor nichts wo mit mann den Anfangstext ändern kann... |
Ich schon ;) Nennt sich "Lines"
mfg
wurstuk - Sa 11.10.08 14:30
OK danke an alle! :D
edit: achso und weiß jemand vllt auch jemand wie mann eine Scrollbar in ein richedit einbaut?
also das mann dann so durch den text scrollen kann^^
DiamondDog - Sa 11.10.08 14:40
Guck mal bei den Eigenschaften unter ScrollBars.
wurstuk - Sa 11.10.08 14:55
so das mit dem Öffnen klappt aber wenn ich etwas speicher kommt zwar das gespeicherte aber auch ganz viele komische zahlen....
weiß jemand wie ich das weg bekomme?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| unit text;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus;
type TForm1 = class(TForm) MainMenu1: TMainMenu; OpenDialog1: TOpenDialog; PrintDialog1: TPrintDialog; SaveDialog1: TSaveDialog; RichEdit1: TRichEdit; Datei1: TMenuItem; ffnen1: TMenuItem; Speichern1: TMenuItem; Drucken1: TMenuItem; Schlieen1: TMenuItem; procedure FormCreate(Sender: TObject); procedure ffnen1Click(Sender: TObject); procedure Schlieen1Click(Sender: TObject); procedure Speichern1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin richedit1.Clear; end;
procedure TForm1.ffnen1Click(Sender: TObject); begin try if opendialog1.Execute then richedit1.Lines.loadfromfile(opendialog1.filename); except showmessage ('Fehler beim Öffnen'); end; end; procedure TForm1.Schlieen1Click(Sender: TObject); begin close; end;
procedure TForm1.Speichern1Click(Sender: TObject); begin try if savedialog1.Execute then richedit1.lines.SaveToFile (savedialog1.FileName); except showmessage ('Fehler beim Speichern'); end; end;
end. |
Delete - Sa 11.10.08 15:01
Stell das RichEdit mal auf PlainText. Außerdem solltest Du Dir beizeiten eine ordentliche Einrückung angewöhnen.
wurstuk - Sa 11.10.08 15:03
ja das mit dem einrücken is gerade so ne Sache...
ich hatte so ein Programm das den Quelltext eingerückt hat aber das funktioniert ein paar tage und dann is es plötzlich wieder aus dem Verzeichnis gelöscht...-.-
edit: wie auf plaintext? im Objektinspektor?
Delete - Sa 11.10.08 15:04
Ich hab da kein Programm für, aber eine Space-Taste^^.
wurstuk - Sa 11.10.08 15:06
ja aber dis ist mir i-wie zu anstrengend ^^ hehe
Delete - Sa 11.10.08 15:10
Und mir ist das zu anstrengend, unformatierten Code zu lesen. Wenn das mehr als 20 Zeilen sind, steigt da ja niemand mehr durch, was wozu gehört.
jaenicke - Sa 11.10.08 15:35
Dafür empfehle ich dir
CnPack [
http://www.cnpack.org/index.php?lang=en], insbesondere CnPack IDE Wizards, da kannst du einfach mehrere Zeilen markieren und mit Tab einrücken bzw. mit Shift + Tab ausrücken. Außerdem zeigt es dir visuell an was wozu gehört, also welches end zu welchem begin und wo welcher Block endet, etc.
Delete - Sa 11.10.08 15:55
Mehrere Zeilen ein- und ausrücken kann man auch mit IDE-Mitteln.
jaenicke - Sa 11.10.08 16:54
Das kommt vermutlich auch auf die Delphi-Version an, und beim BDS 2006 habe ich davon nix gemerkt, wie geht das da? Mit Markieren + Tab jedenfalls nicht, denn das habe ich ausprobiert gehabt. :nixweiss:
Delete - Sa 11.10.08 16:55
Markieren und mit STRG-K-I ein- bzw. mit STRG-K-U ausrücken. Geht schon seit TurboPascal 6 :mrgreen:
Yogu - Sa 11.10.08 18:16
Ich denke, das war jetzt genug Off Topic. :roll:
wurstuk hat folgendes geschrieben : |
wie auf plaintext? im Objektinspektor? |
Ja, stelle einfach die Eigenschaft
PlainText des RichEdits auf
True. Andernfalls wird eine RTF-Datei gespeichert, die auch Formatierungsinformationen enthält.
jaenicke - Sa 11.10.08 18:31
Wenn du nur eine reine unformatierte Textanzeige haben möchtest, dann kannst du auch TMemo nehmen, der Unterschied ist, dass du in einem Memo nicht Teile des Texts andersfarbig oder fettgedruckt darstellen kannst wie im TRichEdit.
Wenn du aber ohnehin keine Datei im .rtf Format mit solchen Formatierungen benutzt, dann brauchst du das ja auch gar nicht.
wurstuk - So 12.10.08 03:16
OK danke für die Antworten
ich wrds über morgen mal aus probieren komm vorher nehmlich nicht mehr an den PC^^
wurstuk - So 12.10.08 20:50
So das mit dem Speichern und Öffnen klappt jetzt wunderbar! :D
Aber drucken klappt noch nicht so ganz könnte mir dis vllt nochmal einer erklären?
weil in dem Buch mit dem ich gerade lernen steht so
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| begin try if printdialog1.execute then richedit1.text := diagnose.text; richedit1.print := ('Diagnose'); end; except showmessage ('Fehler beim Drucken'); end; end; |
kann man das auch ohne eine Variable machen?
Yogu - So 12.10.08 21:02
wurstuk hat folgendes geschrieben : |
in dem Buch mit dem ich gerade lernen steht so
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| begin try if printdialog1.execute then richedit1.text := diagnose.text; richedit1.print := ('Diagnose'); end; except showmessage ('Fehler beim Drucken'); end; end; | |
Das steht da garantiert nicht, oder in deinem Buch ist ein Fehler. Am besten rückst du deine Quelltexte immer richtig ein, dann siehst du Fehler frühzeitig:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| begin try if printdialog1.execute then richedit1.text := diagnose.text; richedit1.print := ('Diagnose'); end; except showmessage ('Fehler beim Drucken'); end; end; |
So sieht es besser aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| begin try if PrintDialog1.Execute then begin RichEdit1.Text := Diagnose.Text; RichEdit1.Print := ('Diagnose'); end; except ShowMessage('Fehler beim Drucken'); end; end; |
Da ist aber auch noch ein Kleiner Fehler din:
Delphi-Quelltext
6:
| { ... } RichEdit1.Print('Diagnose'); |
Du musst den Titel als Parameter übergeben, Funktionen können keine Werte zugewiesen werden. ;)
wurstuk hat folgendes geschrieben : |
kann man das auch ohne eine Variable machen? |
Welche Variable meinst du denn? Ich sehe dort nur VCL-Instanzen. :gruebel:
wurstuk - Mo 13.10.08 15:26
na diagnose ist im Buch eine Variable vom Typ tstringlist^^
Aber gibt es vllt ein weg wie mann einfach den befehl gibt richedit zu drucken ohne diagnose?
jaenicke - Mo 13.10.08 15:30
Ja, lass es einfach weg^^, die Zeile in der du Diagnose benutzt schreibt den Text aus Diagnose ja in das RichEdit und wenn du das nicht willst, warum schreibst du es dann hin? :gruebel:
Der Druckbefehl ist ja nur der Befehl Print, die Zeile davor mit der Zuweisung des Texts wird ja zum Drucken selbst nicht benötigt.
wurstuk - Mo 13.10.08 21:35
ok also nur
oder wie?
Und kann mir vllt jemand sagen wie ich schortcuts machen kann oder wie die heißen?
also zum Speichern dann Strg+S oder so^^
Yogu - Mo 13.10.08 21:47
wurstuk hat folgendes geschrieben : |
ok also nur
oder wie? |
Das würde nur den Dialog aufrufen, aber sonst nichts machen.
Delphi-Quelltext
1: 2:
| if PrintDialog1.Execute then RichEdit1.Print('Diagnose'); |
wurstuk hat folgendes geschrieben : |
Und kann mir vllt jemand sagen wie ich schortcuts machen kann oder wie die heißen?
also zum Speichern dann Strg+S oder so^^ |
Füge ein PopupMenü oder MainMenü hinzu (falls du die noch nicht hast), und setze die Eigenschaft
ShortCut. Für's Drucken wird gewöhnlich [delhpi]Strg+P[/delphi] verwendet.
wurstuk - Mo 13.10.08 22:56
Haha das mit den Shortcuts ist ja einfach^^ Danke! :D
So mein Texteditor kann jetzt schon eine neue Seite erstellen, eine Seite laden, eine Seite speichern, Sicherheitsfragen stellen und bald auch eine Seite drucken :D Es wird!^^
wurstuk - Di 14.10.08 15:19
Ich hab jetzt nochmal ne frage, ich wollte ein Speichern Feld und ein speichern unter Feld machen und wenn mann schon einmal speichern unter gedrückt hat und dann speichern drückt speichert er dis in der selben Datei.
Dis klappt auch alles aber ich wollte auch das wenn mann noch nicht auf speichern unter gedrückt hat das sich dann der speichern Dialog öffnet und wenn mann dort dann speichert reicht es auch wenn mann dann auf speichern drückt und dann kommt halt kein Dialog sondern es speichert einfach^^ aber immer wenn ich dis mit dem 2 mal speichern mache muss ich immer wieder den speichern Dialog benutzen... was mach ich falsch?
hier ist mein quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Speichern2Click(Sender: TObject); begin try if berg = True then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False; end; try if SaveDialog1.Execute then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; berg := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False;
end; end;
end. |
P.S. ich hoffe er ist einigermaßen gut eingerückt^^
Delete - Di 14.10.08 15:35
Wenn Du den Speicher beim Speichern gespeichert hast, könntest Du bei erneutem Speichern ja den gespeicherten Speicher speichern. ^^ SCNR
Nee, im Ernst, ich würde mir ein privates Feld für den Dateinamen anlegen, beim Speichern befüllen und anschließend abfragen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TDeinForm = class(TForm) private FFilename: string; ... end;
...
procedure TDeinForm.SpeichernClick(Sender: TObject); begin if Length(FFilename) > 0 then Richedit1.Lines.SaveToFile(FFilename) else if SaveDialog1.Execute then begin FFilename := SaveDialog1.Filename; Richedit1.Lines.SaveToFile(FFilename); end; end; |
So in der Art.
wurstuk - Mi 15.10.08 15:29
hmmm aber weiß jemand wo bei mir der Fehler ist?
jaenicke - Mi 15.10.08 15:33
wurstuk hat folgendes geschrieben : |
hmmm aber weiß jemand wo bei mir der Fehler ist? |
Naja, ich vermute deine Einrückung sollte so sein wie du denkst, dass der Code ausgeführt wird, das ist aber nicht so.
wurstuk hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Speichern2Click(Sender: TObject); begin try if berg = True then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False; end; try if SaveDialog1.Execute then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; berg := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False;
end; end;
end. | |
Die korrekte Einrückung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Speichern2Click(Sender: TObject); begin try if berg then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False; end; try if SaveDialog1.Execute then richedit1.lines.SaveToFile (savedialog1.FileName); sicher := True; berg := True; except knopf := Application.MessageBox('Fehler beim Speichern der Datei','Fehler',0+16); sicher := False; end; end;
end. |
wurstuk - Mi 15.10.08 17:35
So das Problem wäre jetzt auch gelöst! :D
Aber ich hab noch eine frage, wie kann ich machen das wenn ich das Programm als Standard text öffnungs Programm eintrage dass dann auch der text angezeigt wird?
Delete - Mi 15.10.08 17:38
Schau Dir mal ParamStr() und ParamCount an.
wurstuk - Mi 15.10.08 21:19
hmmm das versteh ich nicht^^ sry aber ich mach noch nicht so lange Delphi ^^ könnte mir dis vllt nochmal einer erklären?
und kann mir vllt auch noch einer sagen wie ich einen font Dialog mache?
Delphi-Quelltext
1: 2: 3: 4: 5:
| begin if fontdialog1.execute then ...end; end. |
Yogu - Mi 15.10.08 21:34
wurstuk hat folgendes geschrieben : |
und kann mir vllt auch noch einer sagen wie ich einen font Dialog mache? |
Eigentlich gilt in diesem Forum: Nur eine Frage pro Topic ...
Delphi-Quelltext
1: 2: 3: 4: 5:
| FontDialog1.Font.Assign(RichEdit1.Font);
if FontDialog1.Execute then RichEdit1.Font.Assign(FontDialog1.Font); |
wurstuk - Mi 15.10.08 21:44
OK werde ich dann mal machen wusste bloß nicht ob ich nin neues Thema machen sollte weil ich in einem anderen Forum voll zusammen geschissen wurde das ich für jede frage einen neuen Thread aufgemacht habe^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!