Visit our Sponsor   Visit our Sponsor
delphi3000.com - the free delphi knowledge platform
delphi3000.com - the free delphi knowledge platform
Have a look at your member-status

connecting people's knowledge


  - Recent ArticlesRSS feed for Recent Articles on delphi3000.com
  - List of All Articles
  - Top Viewed Articles
  - Articles (+Attachem.)
  - Articles Of Interest
  - Categories
  - Top Uploader
  - Search
  - Index

  - My Home
  - Submit an Article
  - My Articles
  - My Personal Data
  - My Bookmarks
  - Activities
  - Login/Logout

  - Sign Up
  - Why Sign Up
  - Newsletter

  - Press
  - Advertise

  - Contact
  - Feedback





Community
Borland
ClubeDelphi
Dr. Bob
UK-BUG
Delphi Meetings
Planeta Delphi







Startblatt.de






Share this article with friendsShare this article with friends
Rate this articleRate this article - to keep the quality of delphi3000.com !
Comment this article or read through previous comments (0)


How to save the positions of the TCoolBar bandsFormat this article printer-friendly!Bookmark function is only available for registered users!
Product:
Delphi 5.x (or higher)
Category:
VCL-General
Skill Level:
Scoring:
Last Update:
01/31/2002
Search Keys:
delphi delphi3000 article borland vcl code-snippet TCoolBar layout store stream
Times Scored:
1
Visits:
2008
Uploader: Valery Goloshchapov
Company:
Reference: N/A
 
Question/Problem/Abstract:
Using the TCoolbar and TCoolband objects in an application is
not that easy because there is no automatic way to store
the layout (the positions) of this control.. but every "real"
application has this request...
Answer:



- How to save the positions of the TCoolBar bands

"Using the TCoolbar and TCoolband objects in an application is not that easy because there is no automatic way to store the layout (the positions) of this control.. but every "real" application has this request..."

This question was mentioned in the 76th newsletter of delphi3000.com.

Well, let's face the problem. What properties of TCoolBand objects should we store? Uh, no! First, let's check, if someone did this work already. We can change bands layout in design time and store it to the .dfm file, right?. So? So we do not need to write lots of code, Borland programmers did it for us.

There are neat pieces of code in the help:

function ComponentToString(Component: TComponent): string;
var
  BinStream:TMemoryStream;
  StrStream: TStringStream;
  s: string;
begin
  BinStream := TMemoryStream.Create;
  try
    StrStream := TStringStream.Create(s);
    try
      BinStream.WriteComponent(Component);
      BinStream.Seek(0, soFromBeginning);
      ObjectBinaryToText(BinStream, StrStream);
      StrStream.Seek(0, soFromBeginning);
      Result:= StrStream.DataString;
    finally
      StrStream.Free;
    end;
  finally
    BinStream.Free
  end;
end;

(it's from example for ObjectBinaryToText procedure, I just knew it before)

Now we need TCoolBar, couple TToolBar and TMemo.

Memo1.Lines.Text := ComponentToString(CoolBar1);

object CoolBar1: TCoolBar
  Left = 0
  Top = 0
  Width = 688
  Height = 30
  AutoSize = True
  Bands = <
    item
      Break = False
      Control = Form1.ToolBar2
      ImageIndex = -1
      MinHeight = 26
      Width = 139
    end
    item
      Break = False
      Control = Form1.ToolBar1
      ImageIndex = -1
      Width = 543
    end>
end

Looks quite understandable. Binary file will be less meaningful, but there is almost nothing to code.

procedure Store(aCoolbar: TCoolbar; aFilename: string);
var
  Stream: TFileStream;
begin
  try
    Stream := TFileStream.Create(aFilename, fmCreate);
    Stream.WriteComponent(aCoolbar);
  finally
    Stream.Free;
  end;
end;

procedure Restore(aCoolbar: TCoolbar; aFilename: string);
var
  Stream: TFileStream;
begin
  try
    Stream := TFileStream.Create(aFilename, fmOpenRead);
    Stream.ReadComponent(aCoolbar);
  finally
    Stream.Free;
  end;
end;





Please rate this article!
Skill level:
BeginnerExpert

Useful:
No!Very!

Overall rating:
PoorExcellent



Comments to this article
Write a new comment













 
Sign up to consume product discounts for Bronze memberships !

read more


  Visit our Sponsor

 

  Community Ad of
L. Rosenstein
 
   














 







     
  Copyright © 2000 - 2007 delphi3000.com - All rights reserved. Terms of use. || Privacy
delphi3000.com is a service by bluestep.com IT-Services GmbH (Vienna)