Autor Beitrag
Molzer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 29.12.08 18:57 
Hallo, kann mir jemand helfen?

Haben ein StringGrid eingefügt, würde gerne, dass mein Text nicht beim Click erscheint sondern von Beginn an
drinnen steht!

Weiters würde ich gerne eine Zelle zB die Interpret ansprechen und dahinter einen sortier Befehl geben,
Zelle soll zu clicken sein??

lg

ausblenden volle Höhe 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:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;



type
  TForm2 = class(TForm)
    TrackA: TStringGrid;
    procedure TrackAClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.TrackAClick(Sender: TObject);
begin
  TrackA.Cells[0,0] := 'Nr';
  TrackA.Cells[1,0] := 'Stück-Titel';
  TrackA.Cells[2,0] := 'Interpret';
  TrackA.Cells[3,0] := 'Komponist';
end;

end.



Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 29.12.2008 um 18:27


Zuletzt bearbeitet von Molzer am Mo 29.12.08 19:48, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 19:00 
Für das Eintragen kannst du vom Formular die Ereignisse OnCreate (Erzeugen des Formulars) oder OnShow (Anzeigen des Formulars) benutzen.

Das Sortieren solltest du mit den Daten machen bevor du sie in deine Oberfläche (dann sortiert) einträgst.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.12.08 19:00 
Zitat:
Haben ein StringGrid eingefügt, würde gerne, dass mein Text nicht beim Click erscheint sondern von Beginn an
drinnen steht!

Schreib' s doch ins OnCreate des Formulars.
Zitat:
Weiters würde ich gerne eine Zelle zB die Interpret ansprechen und dahinter einen sortier Befehl geben,
Zelle soll zu clicken sein??

:?:
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 29.12.08 19:19 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Für das Eintragen kannst du vom Formular die Ereignisse OnCreate (Erzeugen des Formulars) oder OnShow (Anzeigen des Formulars) benutzen.

Das Sortieren solltest du mit den Daten machen bevor du sie in deine Oberfläche (dann sortiert) einträgst.




finde das oncreate oder das onshow leider nicht bei den ereignissen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 19:22 
Und du hast auch genau gelesen? Und nicht in den Ereignissen des StringGrids gesucht? ;-)
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Für das Eintragen kannst du vom Formular die Ereignisse OnCreate...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 29.12.08 19:28 
Moin und :welcome: im Forum!

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 29.12.08 20:01 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und du hast auch genau gelesen? Und nicht in den Ereignissen des StringGrids gesucht? ;-)
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Für das Eintragen kannst du vom Formular die Ereignisse OnCreate...


Kann es nicht..
Bin noch zu grün hinter den Ohren..
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 20:21 
Ich habe einmal zwei Screenshots gemacht wie es unter der (neuesten kostenlosen) Version Turbo Delphi aussieht. Wenn du eine ältere Version hast, sieht das etwas anders aus.

Wichtig ist, dass wie im oberen Pfeil dein Formular und nicht dein StringGrid ausgewählt ist, außerdem musst du natürlich auf Events (auf deutsch also Ereignisse) umgeschaltet haben. Standardmäßig steht dann das Ereignis unter Miscellanous (Verschiedenes).

Ich rate dazu mit einem Rechtsklick wie im zweiten Bild zu sehen ist die Einträge nach Name anzuordnen, ich finde da findet man alles deutlich schneller, egal ob man weiß worunter der Eintrag steht oder nicht.
Einloggen, um Attachments anzusehen!
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Mo 29.12.08 20:35 
Danke vielmals!!!
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 30.12.08 19:52 
Leider kann ich in meinem StringGrid nicht sortieren, habe einen Bt erstellt.
Was müsste ich machen damit ich den Bt nicht brauche (einlesen einer txt datei, sortieren nach Interpret, siehe Bild)
sondern den im StringGrid verwende!

Bitte um Hilfe!!

ausblenden volle Höhe 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:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
unit cdvu;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, Grids, StdCtrls;

const
  MaxTonTraeger = 1000;
  MaxStueckeProCD = 20;

type
  TSpalte = (colTitel, colInterpret, colTyp, colJahr, colKategorie);

type
  TEntlehner = record
    Name: string;
    PLZ: Integer;
    Ort: string;
    Strasse: string;
    TelNr: string;
  end;

  TDatum = record
    Tag, Monat, Jahr: Integer;
  end;

  TStueck = class
    Titel: string;
    Interpret: string;
    Komponist: string;
  end;

  TTonTraeger = class
    Titel: string;
    Interpret: string;
    Typ: string;
    Jahr: Integer;
    Stuecke: array[1..MaxStueckeProCD] of TStueck;
    Kategorie: string;
    Entlehner: TEntlehner;
    Entlehndatum: TDatum;
    constructor Create;
    destructor Free;
  end;

  TDatenbank = class
    CDDaten: array[1..MaxTonTraeger] of TTonTraeger;
    constructor Create;
    destructor Free;
  end;

  THauptformular = class(TForm)
    MainMenu: TMainMenu;
    Datei1: TMenuItem;
    Oeffnen1: TMenuItem;
    Speichern1: TMenuItem;
    Beenden1: TMenuItem;
    N1: TMenuItem;
    CDAnzeige: TStringGrid;
    TrackAnzeige: TStringGrid;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    Entlehner: TStringGrid;
    SortIBT: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Oeffnen1Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure CDAnzeigeClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CDsAnzeigen;
    procedure SortIBTClick(Sender: TObject);
  private
    { Private-Deklarationen }
    DB: TDatenbank;
    AnzahlCD: Integer;
    CDCurrent: Integer;

  public
    { Public-Deklarationen }
  end;

var
  Hauptformular: THauptformular;

implementation

{$R *.DFM}

uses Zeile;

procedure THauptformular.FormCreate(Sender: TObject);
  var i: Integer;
begin
  // CDDaten konstruieren
  DB := TDatenbank.Create;

  // Formular-Initialisierungen
  CDAnzeige.Cells[Ord(colTitel),    0] := 'Titel';
  CDAnzeige.Cells[Ord(colInterpret),0] := 'Interpret';
  CDAnzeige.Cells[Ord(colTyp)      ,0] := 'Typ';
  CDAnzeige.Cells[Ord(colJahr),     0] := 'Jahr';
  CDAnzeige.Cells[Ord(colKategorie),0] := 'Kategorie';
  Entlehner.Cells[0,0] := 'Ausleihdaten:';
  Entlehner.Cells[1,0] := 'Name';
  Entlehner.Cells[2,0] := 'Ausleihdatum';
  Entlehner.Cells[3,0] := 'PLZ';
  Entlehner.Cells[4,0] := 'Ort';
  Entlehner.Cells[5,0] := 'Straße+Nr';
  Entlehner.Cells[6,0] := 'TelNr';
  TrackAnzeige.Cells[0,0] := 'Nr';
  TrackAnzeige.Cells[1,0] := 'Stück-Titel';
  TrackAnzeige.Cells[2,0] := 'Interpret';
  TrackAnzeige.Cells[3,0] := 'Komponist';
  for i:=1 to 20 do
    TrackAnzeige.Cells[0,i] := IntToStr(i);
end;

procedure THauptformular.FormDestroy(Sender: TObject);
begin
  DB.Free;
end;

procedure THauptformular.Oeffnen1Click(Sender: TObject);
  var F: TextFile;
      Zeile: string;
      Z, ZD: TZeile;
      CDIndex, StueckIndex: Integer;
begin
  CDIndex := 0;
  if OpenDialog.Execute then
  begin
    AssignFile(F, OpenDialog.FileName);
    Reset(F);
    while not EOF(F) do
    begin
      CDIndex := CDIndex + 1;
      with DB.CDDaten[CDIndex] do
      begin
        // Titel, Interpret
        ReadLn(F, Zeile);
        Z := TZeile.Create(Zeile, '|');
        Titel     := Z.Next;
        Interpret := Z.Next;

        // Typ, Jahr, Kategorie
        ReadLn(F, Zeile);
        Z.Create(Zeile, '|');       // Z neu initialisieren
        Typ       := Z.Next;
        Jahr      := StrToInt(Z.Next);
        Kategorie := Z.Next;

        // Entlehndaten: Entlehndatum, Name, PLZ, Ort, Straße, TelNr
        ReadLn(F, Zeile);
        Z.Create(Zeile, '|');       // Z neu initialisieren
        ZD := TZeile.Create(Z.Next, '/');
        with Entlehner do
        begin
          Entlehndatum.Jahr  := StrToIntDef(ZD.Next, 0);
          Entlehndatum.Monat := StrToIntDef(ZD.Next, 0);
          Entlehndatum.Tag   := StrToIntDef(ZD.Next, 0);
          Name    := Z.Next;
          PLZ     := StrToIntDef(Z.Next,0);
          Ort     := Z.Next;
          Strasse := Z.Next;
          TelNr   := Z.Next;
        end;
      end;
      // Stuecke
      for StueckIndex:=1 to MaxStueckeProCD do
      with DB.CDDaten[CDIndex].Stuecke[StueckIndex] do
      begin
        ReadLn(F, Zeile);
        Z.Create(Zeile, '|'); // Z neu initialisieren
                     Z.Next;  // Track-Nr. wird nicht verwendet
        Titel     := Z.Next;
        Interpret := Z.Next;
        Komponist := Z.Next;
      end;
    end;
  end;
  CloseFile(F);
  AnzahlCD := CDIndex;
  CDCurrent := 0;
  if AnzahlCD > 0 then
  begin
    CDsAnzeigen;
    CDCurrent := 1;
    //StueckeAnzeigen(CDCurrent);
  end;
end;

procedure THauptformular.Beenden1Click(Sender: TObject);
begin
  Application.Terminate;
end;
//--------------------------------------------------------------
procedure THauptformular.SortIBTClick(Sender: TObject);
var
  i,j,CDIndex:integer;
  Zwischenspeicher:TTonTraeger;
begin
  for i:=1 to AnzahlCD do       //Sortierverfahren (Minimumsuchen,Sortieren)
    for j:=i to AnzahlCD do
      if DB.CDDaten[j].Interpret<DB.CDDaten[i].Interpret then
        begin
          Zwischenspeicher:=DB.CDDaten[i];
          DB.CDDaten[i]:=DB.CDDaten[j];
          DB.CDDaten[j]:=Zwischenspeicher;
        end;
  for CDIndex:=1 to AnzahlCD do    //Ausgabe
  with DB.CDDaten[CDIndex] do
  begin
    CDAnzeige.RowCount := 1 + AnzahlCD;
    CDAnzeige.Cells[Ord(colTitel),    CDIndex] := Titel;
    CDAnzeige.Cells[Ord(colInterpret),CDIndex] := Interpret;
    CDAnzeige.Cells[Ord(colTyp),      CDIndex] := Typ;
    CDAnzeige.Cells[Ord(colJahr),     CDIndex] := IntToStr(Jahr);
    CDAnzeige.Cells[Ord(colKategorie),CDIndex] := Kategorie;
  end;
end;
//---------------------------------------------------------------------------


procedure THauptformular.CDAnzeigeClick(Sender: TObject);
//----------------------------------------------------------------
var StueckIndex:Integer;
//----------------------------------------------------------------
begin
  CDCurrent := CDAnzeige.Selection.Top;
//----------------------------------------------------------------
for StueckIndex:=1 to MaxStueckeProCD do       //Stücke
  with DB.CDDaten[CDCurrent].Stuecke[StueckIndex] do
  begin
    TrackAnzeige.RowCount := 1 + MaxStueckeProCD;
    TrackAnzeige.Cells[1,    StueckIndex] := Titel;
    TrackAnzeige.Cells[2,    StueckIndex] := Interpret;
    TrackAnzeige.Cells[3,    StueckIndex] := Komponist;
  end;
with DB.CDDaten[cdcurrent].Entlehner do        //Entlehner
  begin
    Entlehner.Cells[1,1] := Name;
    Entlehner.Cells[2,1] := IntToStr(PLZ);
    Entlehner.Cells[3,1] := Ort;
    Entlehner.Cells[4,1] := Strasse;
    Entlehner.Cells[5,1] := TelNr;
    with DB.CDDaten[CDCurrent].Entlehndatum do
      Entlehner.Cells[6,1] := IntToStr(Tag)+'.'+IntToStr(Monat)+'.'+IntToStr(Jahr);
  end;
end;
//----------------------------------------------------------------

procedure THauptformular.CDsAnzeigen;
  var CDIndex: Integer;
begin
  for CDIndex:=1 to AnzahlCD do
  with DB.CDDaten[CDIndex] do
  begin
    CDAnzeige.RowCount := 1 + AnzahlCD;
    CDAnzeige.Cells[Ord(colTitel),    CDIndex] := Titel;
    CDAnzeige.Cells[Ord(colInterpret),CDIndex] := Interpret;
    CDAnzeige.Cells[Ord(colTyp),      CDIndex] := Typ;
    CDAnzeige.Cells[Ord(colJahr),     CDIndex] := IntToStr(Jahr);
    CDAnzeige.Cells[Ord(colKategorie),CDIndex] := Kategorie;
  end;
end;

constructor TTontraeger.Create;
  var i:Integer;
begin
  for i := 1 to MaxStueckeProCD do
    Stuecke[i] := TStueck.Create;
end;

destructor TTontraeger.Free;
  var i:Integer;
begin
  for i := 1 to MaxStueckeProCD do
    Stuecke[i].Free;
end;

constructor TDatenbank.Create;
  var i:Integer;
begin
  for i:=1 to MaxTonTraeger do
    CDDaten[i] := TTontraeger.Create;
end;

destructor TDatenbank.Free;
  var i:Integer;
begin
  for i:=1 to MaxTonTraeger do
    CDDaten[i].Free;
end;

end.
Einloggen, um Attachments anzusehen!
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Di 30.12.08 20:37 
Hallo Molzer,

ich weis nicht welche Delphi-Version Du verwendest, aber vielleicht lohnt es sich mit einer Datenbank anzufreunden.
Für eine kleinere Datenmenge reicht MyBase.

www.delphi-treff.de/...d_list%5B0%5D=mybase
Bis bald Chemiker
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 30.12.08 21:18 
Danke ,werde ich mir mal anschauen!

Bei meinem SringGrid Problem kann mir keiner Helfen?


Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation. Alle Rechte vorbehalten.

Danke
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Di 30.12.08 21:26 
Hallo Molzer,

das ist Delphi 2006.

Bis bald Chemiker
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 21:28 
user profile iconMolzer hat folgendes geschrieben Zum zitierten Posting springen:
Bei meinem SringGrid Problem kann mir keiner Helfen?
Mir ist nicht ganz klar wo dein Problem ist? :nixweiss:

Wenn du keinen extra Button zum Sortieren benutzen willst, dann schreibe den Quelltext zum Sortieren doch direkt nach dem zum Laden statt in den ButtonClick.
Molzer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 30.12.08 22:48 
das möchte ich nicht!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 22:59 
Dann benutze die saubere Lösung und schreibe den Code in eine eigene Methode. Die kannst du ja dann aufrufen von wo immer du willst.