Solved

Access an owner procedure from a TPersistent class

Posted on 2002-03-28
18
309 Views
Last Modified: 2013-11-23
I use in my component a TPersistent class . Here, before invalidate the owner, I need to access an owner procedure ( alike Prepare ).
How can I do that ?
0
Comment
Question by:ginsonic
18 Comments
 
LVL 1

Expert Comment

by:Alone
ID: 6903286
If your owner class and TPersistent descedant are in same unit, you can call all methods directly, because they are treated as "friendly" classes
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6904465
Are you sure ?

Prepare; // [Error] test.pas(272): Undeclared identifier: 'Prepare'
FOwner.Invalidate;

Same result for FOwner.Prepare;
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6904469
And please ... don't put an answer directly . Type a comment and if I will be satisfy I will accept it as answer .
So the question will not be lock for others experts .
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 
LVL 14

Expert Comment

by:AvonWyss
ID: 6904532
If you do know what type the owner is, you can typecast so that you can access the identifiers. Is this what you need?
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6904853
Can you give me a sample ?

My component ( the owner ) is a TCustomControl descendent .

From TPersistent descendent I wish to call something alike :

FOwner.Prepare;
FOwner.Invalidate;
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6909718
umm...

(FOwner as TCustomControl).Invalidate;

I don't think a TCustomControl has a Prepare method... or does it?
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6910147
Prepare is my own procedure . I need to call Prepare before invalidate .

Nick

BTW, FOwner.Invalidate work too .
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6936032
No solution here :(
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6936057
Do you know the class for the owner? Let's say it is TMyCustomOwnerClass

then all you need to do is TMyCustomOwnerClass(FOwner).Prepare;
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6936488
Have tried your suggestion :

TDBGrid(FOwner).Prepare; // in my case

No success :(
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6940947
but TDBGrid does not have a method called Prepare! where did you declare the Prepare method? Any ideas?
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6940949
some codes might be useful
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6941107
I work to a DBGrid that accept images for background . In same time can be set to transparent or semi-transparent.

Before invalidate my grid, I need to PREPARE ( OWN procedure ) the background ( declared into protected area ).

But in same time , when set couple properties (TPersistent descendents) I need to Invalidate . But before this, still I need to call Prepare . So ...

How can I call from a TPersistent an owner procedure ( OWN declared ) .
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6941141
Umm... I need to know who owns Prepare :)
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6941855
Prepare is a protected procedure of my TgnDBGrid descendent from TCustomDBGrid .

So the owner is TgnDBGrid .
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6943637
then you should do

TgnDBGrid(Owner).Prepare;
0
 
LVL 9

Author Comment

by:ginsonic
ID: 6943923
Already tried :(
0
 
LVL 14

Accepted Solution

by:
DragonSlayer earned 50 total points
ID: 6943940
umm... either

1. Make it public

2. Create a new class

type
  THackMyDBGrid = class(TgnDBGrid)
  public
    procedure Prepare; // change visibility
  end;

THackMyDBGrid(Owner).Prepare;



:)
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Suggested Solutions

Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
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…
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

776 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