Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Im memo ne tabelle (https://www.delphipraxis.net/80020-im-memo-ne-tabelle.html)

Axxus 1. Nov 2006 19:08


Im memo ne tabelle
 
Hi delphianer

ich bin an ner konsole und da will ich ne hilfe reinmachen also wenn einer help eingiebt soll ne tabelle kommen in der links der befehl und rechts die beschreibung steht
Jetzt meine frage Wie mach ich ne tabelle in nem memo???

Danke im vorraus

Axxus

fLaSh11 1. Nov 2006 19:41

Re: Im memo ne tabelle
 
Willst du wirklich ne tabelle, wie:
Code:
-------|-------
befehl1|beschreibung
befehl2|beschreibung
oder tuts auch ne einfache anordnung nach tabulator-prinzip?
Etwa:
Code:
khasklgal    klsdfblag
aksbjkasjkaa hasgjbag
asdjf        asdllasgh
ksfjas       asdgasgadha

mkinzler 1. Nov 2006 19:44

Re: Im memo ne tabelle
 
Handelt es sich jetzt um eine Konsolenanwendung oder ein Memo?

marabu 1. Nov 2006 20:30

Re: Im memo ne tabelle
 
Hallo Axxus,

setze die Eigenschaft WantTabs deines Memos auf True, Wrap auf False und führe folgenden Code aus:

Delphi-Quellcode:
const
  COLWIDTH = 20;
var
  TabWidth: Integer;
begin
  TabWidth := ColWidth shl 2;
  Memo.Perform(EM_SETTABSTOPS, 1, Integer(@TabWidth));
end;
Jetzt hast du einen horizontalen Tabulator in deinem Memo und kannst Text zweispaltig ausgeben:

Delphi-Quellcode:
begin
  with Memo do
  begin
    Clear;
    Lines.Add('Links'#9'Rechts kommt jetzt');
    Lines.Add(''#9'ein zweizeiliger Text');
  end;
end;
Mit einem Font fester Breite kannst du sogar Semigraphik-Zeichen einsetzen.

Grüße vom marabu

Axxus 1. Nov 2006 21:51

Re: Im memo ne tabelle
 
ok luete es handelt sich um eine konsole die ich mir aus einem form einem memo einem edit und einem butto zusammengebastelt hab
es is beides ok tabstopp und tabelle tabstopp reicht zwar es is aber gut beides zu wissen
ich probier morgen aus heut hab ich keine zeit mehr und sag euch dann bescheid

Falls ihr noch irgentwelche tipps hab für so ne konsole algemien oder wie man so was besser machen kann als mit nem memo...
dann sagt bescheid Kritik ist zur verbesserung notwendig

Danke

Axxus

mkinzler 1. Nov 2006 21:53

Re: Im memo ne tabelle
 
Unter Konsole verstand ich (und sicherlich aucha ndere) eine Konsolenanwendung.

Nils_13 1. Nov 2006 21:58

Re: Im memo ne tabelle
 
Zitat:

Zitat von Axxus
Falls ihr noch irgentwelche tipps hab für so ne konsole algemien oder wie man so was besser machen kann als mit nem memo...
dann sagt bescheid Kritik ist zur verbesserung notwendig

Ein Memo sollte da je nach Wünschen schon ausreichen, falls nicht, gibt es noch RichEdit und SynEdit. Eine Tabelle zu erstellen sollte mit z.B. Courier New kein großes Problem sein, da die Schriftzeichen alle gleich groß sind. Einfach mal im Forum suchen.

Axxus 2. Nov 2006 22:18

Re: Im memo ne tabelle
 
Sorry das das unklar war hatte leider immer noch keine zeit das auszuprobieren aber jetzt is es ja klar
@ marabu
wieso ist zeischen dem Text in der linken spalte und dem in der rechten ein #9
und kannst du das ma bitte erklären was da gemacht wird ich benutz ungern was was ich ent verstehe
Delphi-Quellcode:
const
  COLWIDTH = 20; {COLWIDTH is ne konstante aber wieso muss ide 20 sein und was gibt sie an}
var
  TabWidth: Integer;
begin
  TabWidth := ColWidth shl 2; {was bedeuted shl und wieso schreibst du für colwidth net gleich 20}
  Memo.Perform(EM_SETTABSTOPS, 1, Integer(@TabWidth)); {was genau wird hier gemacht}
end;
Sorry das sind denk ich noobfragen aber ich versteh manches net und ich will es ja verstehen damit ich es anwenden kann sonst bringt es mir ja für später nichts

Axxus

marabu 3. Nov 2006 09:57

Re: Im memo ne tabelle
 
Hallo Axxus,

fangen wir hinten an: Windows basiert auf Nachrichten und ein multiline edit control (TMemo ist eine Delphi-Kapselung dafür) versteht unter anderem die Nachricht EM_SETTABSTOPS.

Die Methode Perform() übergibt die Nachricht und wartet solange, bis sie verarbeitet wurde. Ich setze der Einfachheit halber eine einheitliche Tabulatorweite, da ja eh nur zwei Spalten benötigt werden - deshalb die 1 im Aufruf von Perform().

Als letzter Parameter muss die Adresse einer Tabelle mit den Tab-Positionen übergeben werden. Mir genügt ja ein einzelnes DWORD (TabWidth, hätte ich auch als DWORD oder Cardinal deklarieren können, aber da ich nie in die Nähe des Vorzeichenbits kommen werde ...). Da die Einheit für die Tab-Positionen sogenannte dialog template units sind und diese mit vier multipliziert die mittlere Zeichenbreite des aktuellen Font ergeben, bedeutet 20 * 4 dass ich etwa 20 Zeichen für die erste Spalte ansetze. SHL 2 ist dasselbe wie "mal 2 hoch 2" also "mal 4".

Und dass ich ColWidth als Konstante definiert habe ist eine Angewohnheit von mir. Sie erlaubt mir die Trennung von Steuerung und Ausführung und erleichtert damit die Wiederverwendung meines Codes an vielen Stellen.

Grüße vom marabu

Luckie 3. Nov 2006 10:33

Re: Im memo ne tabelle
 
Zitat:

Zitat von Axxus
ok luete es handelt sich um eine konsole die ich mir aus einem form einem memo einem edit und einem butto zusammengebastelt hab
es is beides ok tabstopp und tabelle tabstopp reicht zwar es is aber gut beides zu wissen
ich probier morgen aus heut hab ich keine zeit mehr und sag euch dann bescheid

Falls ihr noch irgentwelche tipps hab für so ne konsole algemien oder wie man so was besser machen kann als mit nem memo...
dann sagt bescheid Kritik ist zur verbesserung notwendig

Deine Punkt- und Komma-Tasten sind kaputt. Etwas mehr Sorgfalt beim Erstellen eines Postings wäre wünschenswert. Schließlich erwartest du ja auch, dass man sich mit einer Antwort Mühe gibt und sie in verständlicher Form hier präsentiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz