Autor |
Beitrag |
CurdledMilk
      
Beiträge: 30
|
Verfasst: Fr 27.05.05 18:17
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
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Fr 27.05.05 18:19
Wie wäre es mit einer MDI Applikation?
In D7 über Datei/Neu/Weitere/Projekte
Moin
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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).
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: Fr 27.05.05 18:51
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: 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 
      
Beiträge: 30
|
Verfasst: 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.  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.
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(3  : 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.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 28.05.05 16:56
Siehe Beispiel-Abschnitt aus meinem Post ...
Damit erklären sich diese beiden Meldungen.
D au benötigst dafür allerdings noch eine zweite Form, in der Du die Grunddinge zum bearbeiten der Datei einbaust.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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:
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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 30.05.05 23:26
k, Unit1, Zeilen 92 und 95: TForm1 durch TForm2 ersetzen.
Außerdem in Zeile 96 einen Aufruf Delphi-Quelltext 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 ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
CurdledMilk 
      
Beiträge: 30
|
Verfasst: 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
|
|
|