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 Tstrings als VCL (https://www.delphipraxis.net/41764-tstrings-als-vcl.html)

khalilazzz 8. Mär 2005 09:39


Tstrings als VCL
 
hallo
ich suche mir eine nicht visuale komponente von Typ Tstrings,wobei ich meine strings bei der Programmerstellung eingeben kann,.es ist ähnlich wie Items bei einem Tcombobox.
im voraus danke für eure Bemühung.

alcaeus 8. Mär 2005 09:40

Re: Tstrings als VCL
 
Hallo khalilazzz,

TListBox arbeitet AFAIR mit TStrings

Greetz
alcaeus

khalilazzz 8. Mär 2005 09:43

Re: Tstrings als VCL
 
ich brauche nur eine nicht visuale kommponente,wobei nur die strings speicheren kann.
bie listbox handelt es sich um eine visuale kommponente.

sniper_w 8. Mär 2005 09:46

Re: Tstrings als VCL
 
Zitat:

ich brauche nur eine nicht visuale kommponente,wobei nur die strings speicheren kann.
bie listbox handelt es sich um eine visuale kommponente.
Also nochmal. Nimm TStrings oder TStringList (eher das Zweite).

Sprint 8. Mär 2005 09:47

Re: Tstrings als VCL
 
@khalilazzz: Das was du suchst, findest du in der JVCL.

Stevie 8. Mär 2005 09:47

Re: Tstrings als VCL
 
Zitat:

Zitat von alcaeus
TListBox arbeitet AFAIR mit TStrings

Zitat:

Zitat von khalilazzz
ich suche mir eine nicht visuale komponente

:roll:
Bau dir doch selber eine: ;-)
Delphi-Quellcode:
unit StringsContainer;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TStringsContainer = class(TComponent)
  private
    FStrings: TStrings;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Strings: TStrings read FStrings write FStrings;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TStringsContainer]);
end;

{ TStringsContainer }

constructor TStringsContainer.Create(AOwner: TComponent);
begin
  inherited;
  FStrings := TStringList.Create
end;

destructor TStringsContainer.Destroy;
begin
  FreeAndNil(FStrings);
  inherited;
end;

end.

sniper_w 8. Mär 2005 09:52

Re: Tstrings als VCL
 
Oder wenn das alles zu kompliziert aussieht, dann benutze TListBox aber mit Visible := False;. :gruebel:

Stevie 8. Mär 2005 09:56

Re: Tstrings als VCL
 
Zitat:

Zitat von sniper_w
Oder wenn das alles zu kompliziert aussieht, dann benutze TListBox aber mit Visible := False;. :gruebel:

Wär das nicht ein bisschen overkill?? :shock:

Btw. Es wäre besser, das Thema umzubenennen... In "TStrings als Komponente" ;-)

alcaeus 8. Mär 2005 10:01

Re: Tstrings als VCL
 
Genau. Ich dachte mir eben, du meinstest eine visuelle Kompo (habe auch das "nicht" übersehen :wall:)

Sniper hats bereits gesagt: TStringList. TStrings ist eine abstrakte Basisklasse und kann nicht verwendet werden, TStringList beinhaltet was du brauchst. Einfach mal suchen, dann siehst du auch wie man die Klasse verwendet.

Greetz
alcaeus

Muetze1 8. Mär 2005 10:08

Re: Tstrings als VCL
 
Moin!

Zitat:

Zitat von alcaeus
Sniper hats bereits gesagt: TStringList. TStrings ist eine abstrakte Basisklasse und kann nicht verwendet werden, TStringList beinhaltet was du brauchst. Einfach mal suchen, dann siehst du auch wie man die Klasse verwendet.

Er will es zur Designzeit füllen und in der DFM speichern lassen - es ist doch nicht so schwer zu verstehen. Da nützt ihm ein TStrings Nachfahre nix - den bekommste so nicht gefüllt zur Designzeit.

Stevie hat die richtige Lösung gegeben die er sucht bzw. Sprint's verweis auf die JVCL...

MfG
Muetze1

alcaeus 8. Mär 2005 10:11

Re: Tstrings als VCL
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  SL := TStringList.Create;
  SL.Add('Test1');
  SL.Add('Test2');
  SL.Add('Test3');
end;
Und wo liegt das Problem wenn sie nicht in der DFM liegen? Am Ende landet sowieso alles in der exe :gruebel:
Oder ist es vielleicht zu umständlich, die eine Zeile zu kopieren und die Strings einzufügen?

Greetz
alcaeus

Stevie 8. Mär 2005 10:20

Re: Tstrings als VCL
 
Zitat:

Zitat von alcaeus
Und wo liegt das Problem wenn sie nicht in der DFM liegen? Am Ende landet sowieso alles in der exe :gruebel:
Oder ist es vielleicht zu umständlich, die eine Zeile zu kopieren und die Strings einzufügen?

khalilazzz hat nach der Lösung über eine Komponente gefragt, womit das geht und oben steht die Lösung, wo ist das Problem??? :stupid:

Muetze1 8. Mär 2005 14:07

Re: Tstrings als VCL
 
Moin!

Zitat:

Zitat von alcaeus
Und wo liegt das Problem wenn sie nicht in der DFM liegen?

Ein möglicher Grund: er will es übersetzen mit dem integrierten Resourcenübersetzer. Bei deinem Code müsste er explizit ResourcenStrings anlegen und diese Item für Item zuweisen damit dies möglich wird. Fazit: es gibt viele Gründe warum er das so will...

MfG
Muetze1

jbg 8. Mär 2005 14:20

Re: Tstrings als VCL
 
Zitat:

Zitat von Stevie
Delphi-Quellcode:
property Strings: TStrings read FStrings write FStrings;

Crash mit AV.

Wenn dann schon so:
Delphi-Quellcode:
private
  procedure SetStrings(Value: TStrings);
published
  property Strings: TStrings read FStrings write SetStrings;
end;

procedure TStringsContainer.SetStrings(Value: TStrings);
begin
  FStrings.Assign(Value);
end;

Stevie 8. Mär 2005 14:30

Re: Tstrings als VCL
 
Das kommt davon, wenn man quick'n'dirty was dahinschmiert! :wall:
Hast natürlich absolut recht. :oops: :pale:

sniper_w 8. Mär 2005 14:51

Re: Tstrings als VCL
 
Zitat:

Wär das nicht ein bisschen overkill?? :Shocked:

Btw. Es wäre besser, das Thema umzubenennen... In "TStrings als Komponente" :Wink:
OverKill?!? Das kann ich nicht nachvollziehen.

Stevie 8. Mär 2005 14:56

Re: Tstrings als VCL
 
Zitat:

Zitat von sniper_w
Zitat:

Wär das nicht ein bisschen overkill?? :Shocked:

Btw. Es wäre besser, das Thema umzubenennen... In "TStrings als Komponente" :Wink:
OverKill?!? Das kann ich nicht nachvollziehen.

Naja, vielleicht hab ich mich etwas mit der Wortwahl vergriffen, aber um ein oder mehrere TStrings zu speichern, würde ich keine ListBox auf das Formular packen... (vor allem, wenn du mehr als ein TStrings speichern willst, müsstest du für jedes nen ListBox-Object auf dein Formualr packen! :shock: So wird einfach ein StringContainer-Object aufs Form gepackt und fertig (kann beliebig viele TStrings enthalten, wenn implementiert).


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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-2025 by Thomas Breitkreuz