Solved

Hiding Component Property

Posted on 2004-10-12
14
448 Views
Last Modified: 2013-11-23
Hi there,

I've made my own component with an ancestor of TSpeedButton.  I need to remove the TFont property (so it doesn't appear in the IDE etc).  Can anyone tell me how to do it?  I'm at a total loss.

Thanks a million (or 125 points).


Stu.
0
Comment
Question by:SJohnson
  • 5
  • 3
  • 2
  • +3
14 Comments
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 12295319
redeclare it in the Private section?
0
 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 12295620
Hello

  DragonSlayer, I don't think it's possible with Delphi, you can't unpublish a published  property

but you can hide it from Ojbect Inspector by Register the property editor with nil

try this

  RegisterPropertyEditor(TypeInfo(TFont), TMySpeedButton, 'Font', nil);

Regards,
mohammed
0
 
LVL 17

Accepted Solution

by:
geobul earned 125 total points
ID: 12295931
Hi,

You could hide a property from Object inspector by making it ReadOnly:

private
  FHiddenProperty : Boolean;
published
   property Font : Boolean read FHiddenProperty ;
end;

Regards, Geo
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 12296004
That's right Geo,

  But in that way, you will not be able to set Font property at all
0
 
LVL 17

Expert Comment

by:geobul
ID: 12296649
Of course, Mohammed. I thought it was the question: to remove a published property from a component.
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12296679
Geo's method is the right one

>  But in that way, you will not be able to set Font property at all

That's not completly right as he can already access the inherited font property by code

for example:

procedure TForm1.MySpeedButton1Click(Sender: TObject);
begin
with Sender as TMySpeedButton do
      inherited font.Size := 10;
end;

F68 ;-)
0
 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 12296691
F68
Cool :-)
0
 
LVL 17

Expert Comment

by:geobul
ID: 12296805
Inherited properties can be accessed from inside the component's methods or from outside as F68 showed. There is nothing that can be done for preventing that (as far as I know). But TMySpeedButton.Font won't be visible in ObjInspector and won't be settable. Declaring TMySpeedButton.Font that way doesn't override the inherited Font but only hides it.

Regards, Geo
0
 
LVL 4

Expert Comment

by:ceoworks
ID: 12296830
Hi Stu,

It's not possible hide a published property. This is the Delphi's approach to the object oriented programming.

- protected property can be turn into public
- public property can be turn into published

but you can't make the published to public and public to protected. It's the same for the situation you faced with now. Font property inherited from the TControl ancestor. It's the property which is protected in TControl and published in TSpeedButton so it's not possible to hide it

  + TControl
  |
   + TGraphicControl
   |
    - TSpeedButton

Cheers,

Oktay Sancak
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12296876
ceoworks, that's right, but the question here is about hiding a property from object inspector (IDE) not from component.
So the way suggested by geobul is the simplest and quickest to do this
0
 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 12296907
0
 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 12296918
oppssssssss, sorry ignore my last commet, it's post on the wrong place :-(
0
 
LVL 4

Expert Comment

by:ceoworks
ID: 12297166
Yeah Ferruccio, I think so... Just i wanted to provide some explanation for to make it clear the Delphi's approach to the properties and their visibleness.

Have a nice day :)

Oktay,
0
 
LVL 1

Author Comment

by:SJohnson
ID: 12304497
Thanks very much, Geo.  And thanks to everyone else for the comments too.  I learn something new all the time here!!

Legendary!

Stu
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Printing problem 2 102
Magic Software info 18 138
Multiple image collision 13 80
how to change, disabled button color FMX ? 1 40
A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

856 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