Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

RichEdit i kolone

[es] :: Pascal / Delphi / Kylix :: RichEdit i kolone

[ Pregleda: 1985 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

IgLo
Igor Lovric
Sremski Karlovci

Član broj: 19524
Poruke: 129
*.neobee.net.

Sajt: www.unicornsoft.net


Profil

icon RichEdit i kolone17.12.2004. u 17:24 - pre 234 meseci
Da li se neko seca prozora u Excel-u pomocu kojeg se ucitava text fajl koji je organizovan po kolonama? Meni bi trebalo nesto slicno, znaci neka komponenta kojom mogu da odredim gde pocinje kolona a gde se zavrsava u TXT fajlu, kako bi aj fajl importovao. Ili mozda neki RichEdit Roler ali koji je FREE i koji ima podrzku za tabove, pa da uz pomoc njih ovo odradim.

Ima li neko ideju?
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: RichEdit i kolone17.12.2004. u 17:30 - pre 234 meseci
Ne treba ti neka specijalna kontrola za to. Mozes sam da napravis neku od recimo StringGrid-a. Uopste nije problem da se tako nesto napravi i sa obicnom StringGrid komponentom. Ucitas jedan red iz txt fajla i uzmes recimo prvih 3 karaktera i ubacis ih u prvu kolonu, pa onda sledecih 7, pa narednih 5... itd kako vec zelis i kad zavrsis sa tim redom uzmes sledeci i opet to isto :)
 
Odgovor na temu

IgLo
Igor Lovric
Sremski Karlovci

Član broj: 19524
Poruke: 129
*.neobee.net.

Sajt: www.unicornsoft.net


Profil

icon Re: RichEdit i kolone18.12.2004. u 17:51 - pre 234 meseci
Sve bi to bilo lepo kada bi se unapred znalo kako su kolone organizovane. Meni treba komponenta kojom ce korisnik sam pri importovanju txt fajla u moj program odrediti gde pocinje a gde se zavrsava koja kolona. Naravno mogu da napravim da korisnik za svaku kolonu ukuca gde pocinje a gde se zavrsava, ali je puno lepse kao u Excel-u da misem prevuce liniju koja oznacava kraj kolone. Probaj da importujes TXT u excel, pa ce ti biti jasno o cemu pricam.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: RichEdit i kolone18.12.2004. u 18:14 - pre 234 meseci
Ok :) Potrudicu se da ti ovih dana napravim neku kontrolicu slicnu StringGridu koja ce imati mogucnost da ucitava fajlove i da ih prikazuje kako zelis.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: RichEdit i kolone19.12.2004. u 15:06 - pre 234 meseci
Evo... nisam imao vremena da napravim nesto bolje, ali ovo otprilike radi posao.
Code:
unit NewStringGrid;

interface

uses
  SysUtils, Classes, Controls, Grids;

type
  TNewStringGrid = class(TStringGrid)
  private
    { Private declarations }
    p_Cols:array of Integer;
    p_ColCount:Integer;
    lstStrings:TStringList;

    procedure Set_ColCount(I:Integer);
    function Get_ColCount:Integer;
    procedure Set_Cols(I:Integer; Val:Integer);
    function Get_Cols(I:Integer):Integer;

    procedure CalculateFields;

  protected
    { Protected declarations }
  public
    { Public declarations }
    function LoadStringFile( strFileName: String ):Boolean;
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
    property Colunms[I:Integer]:Integer read Get_Cols write Set_Cols;
  published
    { Published declarations }
    property ColunmCount:Integer read Get_ColCount write Set_ColCount;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TNewStringGrid]);
end;

{ TNewStringGrid }

procedure TNewStringGrid.CalculateFields;
var C:Integer;
    X, Y: Integer;
    S:String;
begin
  For Y := 0 to lstStrings.Count-1 do
  begin
    C := 1;
    For X:= 0 to p_ColCount-1 do
    begin
      S := Copy( lstStrings.Strings[Y], C, p_Cols[X] );
      Inc( C, p_Cols[X] );
      Cells[X,Y] := S;
    end;
  end;
end;

constructor TNewStringGrid.Create(AOwner: TComponent);
begin
  inherited Create( AOwner );
  FixedCols := 0;
  FixedRows := 0;
  RowCount := 1;
  ColunmCount := 1;
  lstStrings := TStringList.Create;
end;

destructor TNewStringGrid.Destroy;
begin
  lstStrings.Free;
  ColunmCount := 0;
  inherited;
end;

function TNewStringGrid.Get_ColCount: Integer;
begin
  Result := p_ColCount;
end;

function TNewStringGrid.Get_Cols(I: Integer): Integer;
begin
  Result := p_Cols[I];
end;

function TNewStringGrid.LoadStringFile(strFileName: String): Boolean;
var F:System.Text;
    S:String;
begin
  Result := False;
  System.Assign( F, strFileName );
  Reset( F );
  While Not Eof( F ) do
  begin
    ReadLn( F, S );
    lstStrings.Add( S );
  end;
  System.Close( F );
  RowCount := lstStrings.Count;
  CalculateFields;
  Result := True;
end;

procedure TNewStringGrid.Set_ColCount(I: Integer);
begin
  p_ColCount := I;
  SetLength( p_Cols, I );
  ColCount := I;
end;

procedure TNewStringGrid.Set_Cols(I, Val: Integer);
begin
  p_Cols[I] := Val;
  CalculateFields;
end;

end.


Ubacis ovu kontrolu u formu, podesis koliko koja kolona ima karaktera (nije mi se dalo da napravim graficki prikaz toga tako da ces sa tim morati sam da se patis :P) i ucitas fajl. Posle mozes da menjas koliko je koja kolona siroka (u karakterima) i grid ce ponovo da rasporedi text po kolonama. Dodao sam 2 nova property-a (bio bi dovoljan i samo jedan, mogao sam da samo malo promenim ColCount umesto ubacivanja novog). Colunms je ono sto odredjuje koliko se karaktera nalazi u kojoj koloni. Znaci ako je Colunms[0]:=4, Colunms[1]:=5 kada se fajl ucita u prvoj koloni ce biti prva 4 karaktera, a u drugoj naredinh 5 i tako. Fajl ucitavas funkcijom LoadStringFile. Vidis kako otprilike to radi pa napravi neku svoju lepu kontrolicu koja ce sve da radi kako treba, da ima podrsku za exception-e, da ucitava fajl i sredjuje prikaz u design time-u,itd... nije tesko samo treba vremena... bas ono sto ja nemam :P
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: RichEdit i kolone

[ Pregleda: 1985 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.