?
Solved

How do I get current field name ?

Posted on 2000-03-28
8
Medium Priority
?
316 Views
Last Modified: 2010-04-04
I have created a form with a number of fields on it, and want to know how do I get the name of the current field being edited, or focused, without writing code for every field component on the form ?

I can do this in a DBGrid easy enough, but am unable to apply the same code to the form.
0
Comment
Question by:pjelias
8 Comments
 
LVL 12

Expert Comment

by:rwilson032697
ID: 2666024
Use TForm.ActiveControl like this:

TheActiveControlName := ActiveControl.Name;

Cheers,

Raymond.
0
 

Author Comment

by:pjelias
ID: 2667381
Have already tried that. The Problem is I am using a FRAME (Delphi 5) that appears on a Form. When I attach the code to the Frame, nothing happens. When I attach code to the Main Form containing the Frame, all other objects names are accessible but not the frame or object within the Frame ?

The Use of Frames has solved alot of problems, but has caused a number of others.

I was thinking of code more related to the Table or Data Components, which can detect field movements/changes etc.

Thanks for your response anyway.
0
 

Author Comment

by:pjelias
ID: 2667393
Adjusted points from 50 to 100
0
Technology Partners: 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 4

Expert Comment

by:jeurk
ID: 2668691
Hello,
are you talking about knowing wich of your
ttable field is beeing edited ?
Is suggest you use the ondatachange event
of you datasource :
extracted from the help file ...

Occurs when the current record has been edited and the application moves from one field or record to another in a dataset associated with the data source component.

type TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object;
property OnDataChange: TDataChangeEvent;

Description

Write an OnDataChange event handler to take specific actions when a field in the current record has been edited and an application moves from one field or record to another in a dataset associated with a data source component. For example, methods that can trigger this event include the Next or Prior methods for the dataset.

Data-aware controls notify a data source of a data change because of:

Scrolling to a new record.
      Modifications to a field’s data.

The Field parameter is nil if more than one of the fields changed simultaneously, such as when moving from one record to another. Otherwise, Field indicates the edited field.

OnDataChange is especially useful in applications that must synchronize data display in controls that are not data aware.
what do you think of that ?
0
 

Accepted Solution

by:
JimboKern69 earned 300 total points
ID: 2669899
This seemed to do the trick...

First some details:

I created a main form, then two sub-frames that I placed on the main form.

The Main Form also has a label who's caption will be the currently focused control.

What I did was create another Interface (TFieldFrame) which each sub-form will implement.  This interface has a single method - GetFieldName(fld:Integer):String;

The main form can then hook in to the active frame and using a generic onEnter and onExit methods, which control is active and get the names.

Instead of posting all the code, which is extensive, I'll send you to a web-site to get the sample D5 project I created.

http://kernsoft.freeservers.com/FieldNames.html

Hope this helps.

Jim Kern
0
 

Expert Comment

by:JimboKern69
ID: 2669908
BTW...I didn't mean to make it look like there is a lot of code to get this done...there is for the initial setup, but then, to add additional frames and/or controls, there is not much to do at all...really.

Anyway...hope it helps.

Jim Kern
0
 

Author Comment

by:pjelias
ID: 2671600
This appears to work well and will be of benefit in future apps, but, I have tried the code in the problem app and have found another hurdle.

I am using a Third Party Component from Infopower 2000 - A RecordView Panel - which after setting a number of options, creates a nicely formatted ViewPanel with Fields and Labels displayed.

Unfortunately, there is no way to attach code to each Edit Box/Component to return the TAG Value, as these components do not exist within the panel.

********************************************************
Have just found a workaround for the problem in preceding paragraph, by creating Infopower Edit/Comboboxes, and then assigning these to each field via Custom Edit option in the Control Type Dialog.
********************************************************

Will give you the points anyway, as the sample app you supplied looks very useful for future apps.

Thanks

0
 

Expert Comment

by:JimboKern69
ID: 2672996
You are welcome...thanks for the grade as well.

Actually, this will also come in handy for myself in future apps, so I will certainly be keeping this code around for some time now.

Note: In about a month I will probably take the code off that web-site, so if the above link is no longer active, feel free to e-mail kernsoft@juno.com for the code or any other questions you may have about it.

Thanks

Jim Kern
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
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…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…
As many of you are aware about Scanpst.exe utility which is owned by Microsoft itself to repair inaccessible or damaged PST files, but the question is do you really think Scanpst.exe is capable to repair all sorts of PST related corruption issues?
Suggested Courses

864 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