Solved

SET SIZE OF THE FORM ON MY PROGRAM BY USING TTRAYICON. HOW CAN I.

Posted on 2006-06-29
10
224 Views
Last Modified: 2010-04-05
HOW CAN I SET SIZE OF ANY FORM IN MY APPLICATION USING MY COMPONENT TTRAYICON.

MAKE SET WHEN CREATE FORM.

WHEN CLOSE FORM SAVE SIZE, NAME.

QUESTIONS:

HOW IS GOING TO BE THE FUNCTION TO SAVE AND SET THIS CONFIGURATION ON INI FILE.
0
Comment
Question by:rafaelrgl
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
10 Comments
 
LVL 17

Expert Comment

by:TheRealLoki
ID: 17015191
uses inifiles;

To load a form's position from an ini file :-
begin
    with TINIFile.create('form positions.ini') do
    try
        Form1.SetBounds(
                                    ReadInteger('Form1', 'Top', Form1.Top),
                                    ReadInteger('Form1', 'Left', Form1.Top),
                                    ReadInteger('Form1', 'Width', Form1.Top),
                                    ReadInteger('Form1', 'Height', Form1.Top)
                                  );
    finally
        free;
    end;
end;

And when you want to save the form's position :-
begin
    with TINIFile.create('form positions.ini') do
    try
        WriteInteger('Form1', 'Top', Form1.Top);
        WriteInteger('Form1', 'Left', Form1.Top);
        WriteInteger('Form1', 'Width', Form1.Top);
        WriteInteger('Form1', 'Height', Form1.Top);
    finally
        free;
    end;
end;
0
 
LVL 17

Expert Comment

by:TheRealLoki
ID: 17015199
oops, should be...

To load a form's position from an ini file :-
begin
    with TINIFile.create('form positions.ini') do
    try
        Form1.SetBounds(
                                    ReadInteger('Form1', 'Top', Form1.Top),
                                    ReadInteger('Form1', 'Left', Form1.Left),
                                    ReadInteger('Form1', 'Width', Form1.Width),
                                    ReadInteger('Form1', 'Height', Form1.Height)
                                  );
    finally
        free;
    end;
end;

And when you want to save the form's position :-
begin
    with TINIFile.create('form positions.ini') do
    try
        WriteInteger('Form1', 'Top', Form1.Top);
        WriteInteger('Form1', 'Left', Form1.Left);
        WriteInteger('Form1', 'Width', Form1.Width);
        WriteInteger('Form1', 'Height', Form1.Height);
    finally
        free;
    end;
end;
0
 
LVL 1

Author Comment

by:rafaelrgl
ID: 17020504
I would like to get the name and position when the form is created using some code in my component ttrayicon, i don't want put the name of the form by myself, like that:

WriteInteger('Form1', 'Top', Form1.Top);
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:rafaelrgl
ID: 17020521
This code is going to be inside my component ttrayicon, I think that's a big problem.
0
 
LVL 17

Accepted Solution

by:
TheRealLoki earned 500 total points
ID: 17027973
easy, all you do is have a property in your trayicon

e.g

private
    fFormToSaveSettingsFor: TForm;
published
    property FormToSaveSettingsFor: TForm read fFormToSaveSettingsFor write fFormToSaveSettingsFor;
end;

the user sets
MyTrayIcon.FormToSaveSettingsFor := Form1;

and then you just go
if assigned(fFormToSaveSettingsFor) then
  //Save Settings
// use FormToSaveSettingsFor.TOp, FormToSaveSettingsFor.Left, etc...
0
 
LVL 17

Expert Comment

by:TheRealLoki
ID: 17027974
FormToSaveSettingsFor.Caption or FormToSaveSettingsFor.Name to get the caption or name respectively
0
 
LVL 1

Author Comment

by:rafaelrgl
ID: 17034194
I'll give you the points, but like i sad, i don't want the user set the form, but my component ttrayicon save the position of all forms in the application whithout any code insert by user. Only thing the user is going to do is set a property on component to do that like this below:



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
THIS SET TRUE OR FALSE ON COMPONENT TO SAVE THE POSITION AND SIZE OF ANY FORM IN THE APPLICATION
BUT, HOW IS GOING TO SAVE THAT?
//////////////////////////////
private
    fActivePosition : Boolean;

protect
    procedure SetActivePosition(Value : Boolean); virtual;

published
    property ActivePosition : boolean read fActivePosition write SetActivePosition;


procedure TNucleo_TrayIcon.SetActivePosition(Value : Boolean);
begin
  //if (value <> fActivePosition) and not (csDesigning in ComponentState) then
  if value <> fActivePosition then
  Begin
      fActivePosition := Value;
  end;
end;
////////////////////////////////////////////////////////////////

///// can you help me to understand how this is going to work.
////  THANKS A LOT        
 
0
 
LVL 17

Expert Comment

by:TheRealLoki
ID: 17034516
oh I see now. use the Screen.Forms property then

var
  i : integer;
begin
  for  i := 0 to Screen.FormCount-1 do
  begin
// Screen.Forms[] returns a "TForm", so you can do anything you like with it eg.
      memo1.lines.add(Screen.Forms[i].Name);
  end;
end;
0
 
LVL 1

Author Comment

by:rafaelrgl
ID: 17034620
HOW CAN I KNOW WHEN THE FORM IS CREATING?
0
 
LVL 1

Author Comment

by:rafaelrgl
ID: 17034621
OR THE FORM IS CLOSING?
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This video shows how to use Hyena, from SystemTools Software, to update 100 user accounts from an external text file. View in 1080p for best video quality.

732 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question