procedure Register;

implementation
//var
// MGRGroup:array of TMRGroup;

procedure Register;
begin
RegisterComponents(’Visor’, [TGRTreeView]);
end;

{ TGRTreeView }

constructor TGRTreeView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fDataSource := TDataLink.Create;
fFeyField := TFieldDataLink.Create;
fFeyField.Control := self;
fMasterFeyField := TFieldDataLink.Create;
fMasterFeyField.Control := self;
fNameField := TFieldDataLink.Create;
fNameField.Control := self;
fSeparator := ‘^’;
fLock := false;
HideSelection := false;
fSearchIndex := -1;
end;

destructor TGRTreeView.destroy;
begin
fNameField.Free;
fNameField := nil;
fFeyField.Free;
fFeyField := nil;
fDataSource.Free;
fDataSource := nil;
inherited;
end;

function TGRTreeView.GetBufStart(Buffer: PChar; var Level: Integer): PChar;
begin
Level := 0;
while Buffer^ in [’ ‘, #9] do
begin
Inc(Buffer);
Inc(Level);
end;
Result := Buffer;
end;

function TGRTreeView.GetDataSource: TDataSource;
begin
Result := fDataSource.DataSource;
end;

procedure TGRTreeView.MRPLoadFromFile(const FileName: string);
var
Stream: TStream;
FNT, FNR, Ex: string;
begin
if not FileExists(FileName) then
Exit;
Ex := ExtractFileExt(FileName);
if Ex = ” then
begin
FNT := ExtractFileName(FileName) + ‘.tree’;
FNR := ExtractFileName(FileName) + ‘.ini’;
end
else
begin
FNT := ExtractFileName(FileName);
FNT := Copy(FNT, 0, pos(’.', FNT) - 1);
FNR := FNT + ‘.ini’;
FNT := FNT + ‘.tree’;
end;
FNT := ExtractFilePath(FileName) + FNT;
FNR := ExtractFilePath(FileName) + FNR;
Stream := TFileStream.Create(FNT, fmOpenRead);
try
MRPLoadFromStream(Stream);
finally
Stream.Free;
end;
end;

function TGRTreeView.MRGetIndexByText(AText: string): integer;
var
i: integer;
begin
if Items.Count = 0 then
begin
Result := -1;
Exit;
end;
for i := 0 to Items.Count - 1 do
begin
if Items.Item[i].Text = AText then
begin
Result := i;
Exit;
end;
end;
Result := -1;
end;

procedure TGRTreeView.MRPLoadFromFile(const FileName: string;
RootName: string);
var
FNT, FNR, Ex: string;
ANode: TTreeNode;
begin
if not FileExists(FileName) then
Exit;
Ex := ExtractFileExt(FileName);
if Ex = ” then
begin
FNT := ExtractFileName(FileName) + ‘.tree’;
FNR := ExtractFileName(FileName) + ‘.ini’;
end
else
begin
FNT := ExtractFileName(FileName);
FNT := Copy(FNT, 0, pos(’.', FNT) - 1);
FNR := FNT + ‘.ini’;
FNT := FNT + ‘.tree’;
end;
FNT := ExtractFilePath(FileName) + FNT;
FNR := ExtractFilePath(FileName) + FNR;
if (not FileExists(FNT)) or (not FileExists(FNR)) then
begin
ANode := Items.Add(nil, RootName);
ANode.StateIndex := 0;
Self.MRPSaveToFile(FileName);
end
else
begin
MRPLoadFromFile(FileName);
end;
end;

Страницы: 1 2 3 4 5 6

Эта запись была опубликована 14.12.2007в 20:49. В рубриках: Базы данных. Вы можете следить за ответами к этой записи через RSS 2.0. Комментарии пока закрыты, но Вы можете оставить трекбек со своего сайта.