Entwickler-Ecke
Sonstiges (Delphi) - Texteditor mehrere Dateien zur gleichen Zeit bearbeiten
CurdledMilk - Fr 27.05.05 18:17
Titel: Texteditor mehrere Dateien zur gleichen Zeit bearbeiten
Hallo ihr!
Also ich bin noch Anfänger in Delphi und soll für die Schule einen Texteditor schreiben. Mein erstes größeres Problem liegt jetzt darin, die Möglichkeit zu schaffen, mehrere Texdokumente zu öffnen. Ich habe schon gesucht aber nichts so richtig in diese Richtung gefunden. Hoffe ihr könnt mir schnell helfen. Ich wöllte es gern so machen, das man diese dann über eine Karteikarte (wie bei firefox wenn mehrere Seiten geöffnet sind) auswählen kann.
Hoffe ihr könnt mir helfen.
stifflersmom - Fr 27.05.05 18:19
Wie wäre es mit einer MDI Applikation?
In D7 über Datei/Neu/Weitere/Projekte
Moin
CurdledMilk - Fr 27.05.05 18:29
Hm da is ja dann schon alles vorgegeben. Das dürfen wir also nicht verwenden.
Gibt es auch noch weitere Möglichkeiten.
BenBE - Fr 27.05.05 18:39
Datei\Neu\Form
Dort dann ein Sub-Fenster mit Editor implementieren...
Danach nur noch im Hauptfenster Menü und ähnliches erstellen und dann Für jede neue Textdatei ein eigenes Subfenster erstellen (Dynamisch, zur Laufzeit).
CurdledMilk - Fr 27.05.05 18:51
:shock:
Danke erst mal aber da ich wie gesagt noch Anfänger bin versteh ich einiges (viel *g*) davon nicht:
Sub-Fenster mit Editor implementieren?
Dynamisch, zur Laufzeit?
Wie mach ich es, das sich eine neues Textfeld öffnet wenn der user auf datei>neu klickt
und klappt es dann, das die Funktionen (Schrifftgröße etc.) auch für die neuen fenster gelten.?
BenBE - Fr 27.05.05 21:44
Und zwar benötigst Du dafür eine TObjectList
Dateien: TObjectList;, welches Du in deiner Main-Form deklarierst.
In TMainForm.Create initialisierst Du diese TObjectList dann mit
Dateien := TObjectList.Create(true);
Klickt Der User dann auf Datei\Neu führst Du folgende beiden Zeilen aus:
Delphi-Quelltext
1: 2: 3: 4:
| var DateiFenster: TDeinDateiEditorForm;
Datei := TDeinDateiEditorForm.Create(nil); Dateien.Add(Datei); |
Wölltest Du nun eine existierende Datei öffnen, so könntest Du dies realisieren, indem Du
Datei.OpenFile(FileName); aufrufst (sofern diese Methode in deiner Formularklasse TDeinDateiEditorForm implementiert ist (empfehelnswert).
TDeinDateiEditorForm kümmert sich dann um alle weiteren angelegenheiten zum Behandeln der Dateien (öffnen\speichern einer Datei). Guck Dir dazu mal die Komponenten TMemo und TRichEdit an.
HTH.
CurdledMilk - Sa 28.05.05 11:00
Mhh ja.
was is diese Tobjektlist genauer is es ein objekt oder eine var wenn es ein objekt is wo is es dann in der Objektliste
wenn ich versuche es als var zu nehmen kommt das dabei raus
"[Fehler] Unit1.pas(19): Undefinierter Bezeichner: 'TObjectList'"
"[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden"
BenBE - Sa 28.05.05 11:31
Bitte benutze bei unbekannten Bezeichnern doch einfach die sich oben links auf deiner Tastatur befindliche F1-Taste, die Dir beim markieren des Bezeichners TObjectList im Quelltext sofort verraten hätte, dass Du die Unit Contnrs einbinden musst.
CurdledMilk - Sa 28.05.05 11:36
Ja das hab ich gelesen konnte damit aber nichts anfangen.
Geh ich da auf Datei>neu>unit oder mach ich das irgend wie anders
stifflersmom - Sa 28.05.05 12:10
Du nimmst die Unit "Contnrs" unter uses mit auf,
das war's.
Aber mal ohne Dir zu nahe treten zu wollen,
ist Dein Delphi (object pascal) denn umfangreich genug,
um Dein Problem auch wirklich Programmiertechnisch
erschlagen zu können?
Denn eine Unit einzubinden sollte zum Grundstock eines
Delphi-Programmierers gehören.
Moin
CurdledMilk - Sa 28.05.05 13:08
Is halt ne Hausarbeit bis nächsten Freitag. (Wir haben dafür die ganze Woche frei) Auch wenn ichs nich kann muss ichs also machen. :D Wir sollen uns delphi so zu sagen näher erarbeiten.
Ich zeig ma wie ichs jetzt Hab einfach nur so zum probieren in einem neuen Delphi Progr.
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Contnrs, Menus ;
type TForm1 = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; Neu1: TMenuItem; procedure FormCreate(Sender: TObject); procedure Neu1Click(Sender: TObject); private public end;
var Form1: TForm1; Dateien: TObjectList; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Dateien := TObjectList.Create(true); end;
procedure TForm1.Neu1Click(Sender: TObject); var DateiFenster: TForm1; Datei:Textfile; begin Datei := TForm1.Create(nil); Dateien.Add(Datei); end;
end. |
Fehlermeldung sind diese:
[Fehler] Unit1.pas(38): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(39): Inkompatible Typen: 'TObject' und 'Text'
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt.
CurdledMilk - So 29.05.05 15:21
Ich hab mich noch mal bisl drann versucht komm aber nicht wirklich weiter hab jetzt 2. Form(en) in Form1 Das Hauptprogramm (mit Datei>neu laden Speichern; Format>Text Formatieren Text Ausrichtung) und in Form2 Das MEMO wo der user drin schreiben soll. Wie muss ich dann jetzt den Quelltext schreiben.
Also was muss ich in den Stellen die du mir gegeben hast einfügen.
Danke noch mal für die bis jetzige Hilfe.
BenBE - So 29.05.05 21:03
Eins nur kurz vorweg: Wir sind hier kein Hausaufgabenforum! D.h. das hier jegliche Hilfe freiwillig ist und daher ich (und auch kein anderer) verpflichtet ist, Dir hier deine Hausaufgaben zu lösen.
Lese bitte meine vorigen Posts nocheinmal genau durch, da ich dort schon (wiederholt) gesagt habe, welche Funktion Du wo ergänzen musst und Poste im Anschluss daran mal Deinen bisherigen Source.
CurdledMilk - Mo 30.05.05 12:12
Nein das is schon klar. Ich bin halt nur etwas genervt weil ichs nich auf die Reihe bringe. Und ich hab mir den Quelltext von dir wirklich schon oft angeschaut und auch viel probiert aber es funktioniert irgend wie nicht. Ich komm noch nicht so richtig damit klar was ich für was einsetzen soll (TDeinDateiEditorForm nehme ich tform1 --> wo die ganzen Bearbeitungsbutton drin sind, für DateiFenster und Datei weiß ich noch nicht was da rein muss. Mein aktueller Quelltext sieht so aus:
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: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, ToolWin, ImgList,Contnrs;
type TForm1 = class(TForm) MainMenu1: TMainMenu; Datei1: TMenuItem; Neu1: TMenuItem; ffnen1: TMenuItem; Speichern1: TMenuItem; Speichernunter1: TMenuItem; Drucken1: TMenuItem; Schlieen1: TMenuItem; Programmbeenden1: TMenuItem; Bearbeiten1: TMenuItem; Rckgngig1: TMenuItem; Ausschneiden1: TMenuItem; Kopieren1: TMenuItem; Einfgen1: TMenuItem; AllesMarkieren1: TMenuItem; Lschen1: TMenuItem; Format1: TMenuItem; Schrifft1: TMenuItem; N3: TMenuItem; Hilfe1: TMenuItem; Information1: TMenuItem; FontDialog1: TFontDialog; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; PrintDialog1: TPrintDialog; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; Ausrichtung1: TMenuItem; ToolButton5: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; ToolButton9: TToolButton; ToolButton10: TToolButton; ToolButton11: TToolButton; ToolButton12: TToolButton; ToolButton13: TToolButton; ToolButton14: TToolButton; ToolButton15: TToolButton; ToolButton16: TToolButton; ToolButton17: TToolButton; ToolButton18: TToolButton; ToolButton19: TToolButton; ToolButton20: TToolButton; ToolButton21: TToolButton; ToolButton22: TToolButton; ToolButton23: TToolButton; ToolButton24: TToolButton; ToolButton25: TToolButton; ToolButton26: TToolButton; ToolButton27: TToolButton; ToolButton28: TToolButton; ToolButton29: TToolButton; ImageList1: TImageList;
procedure FormCreate(Sender: TObject); procedure Neu1Click(Sender: TObject); private public end;
var Form1: TForm1; Dateien: TObjectList; implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Dateien := TObjectList.Create(true); end;
procedure TForm1.Neu1Click(Sender: TObject); var Form2: TForm1; begin Textfile := TForm1.Create(nil); Dateien.Add(Datei);
end;
end. |
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:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm2 = class(TForm) Memo1: TMemo; private public end;
var Form2: TForm2;
implementation
{$R *.dfm}
end. |
Ich hoffe du kannst mir weiter helfen.
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
BenBE - Mo 30.05.05 23:26
k, Unit1, Zeilen 92 und 95:
TForm1 durch
TForm2 ersetzen.
Außerdem in Zeile 96 einen Aufruf
ergänzen.
Danach sollte die Datei-->Neu-Funktion hinhauen.
Für das Öffnen und Speichern von Dateien fügst Du nach Zeile 15 folgende beiden Zeilen ein:
Unit2.pas
16: 17:
| { ... } procedure LoadFileData(Filename:String); procedure SaveFileData(Filename:String); |
Danach kurz Strg+Umschalt+C drücken (noch in der Klassendeklaration) und es sollte auch gleich die Implementation dieser Routinen erscheinen. Das Laden und Speichern selber, traue ich Dir mal zu ...
CurdledMilk - Di 31.05.05 11:56
Hallo
supie vielen dank es geht.
Ich mach noch mal nen neuen post für die Speicherfrage auf. Ich kann zwar speichern aber der text wird dann nich mit gespeichert. Sondern nur ne lehre txt.datei
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!