Solved

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

Posted on 2006-06-29
10
219 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
  • 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
 
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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
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

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

747 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now