Avatar billede spil2vind Nybegynder
27. oktober 2009 - 15:07 Der er 13 kommentarer

Finde hvad der er blevet sat SetFocus

For at gøre forskellige komponenter/felter aktive, kan man bruge kommandoen .SetFocus, men kan man også finde udaf hvilken komponent der er aktiv?
Avatar billede a_nor Nybegynder
27. oktober 2009 - 15:15 #1
form.activecontrol
Avatar billede spil2vind Nybegynder
27. oktober 2009 - 18:56 #2
Kan se dit point, men forklar venligst mere ?

Pft
Carsten
Avatar billede a_nor Nybegynder
28. oktober 2009 - 09:59 #3
Hej Carsten

Nu ved jeg jo ikke hvad det er du vil, men du kan f.eks. udføre metoder tilhørende den Control der har focus:

if (self.ActiveControl is tButton)  then
  tButton(self.ActiveControl).Click;

eller anvende properties:

if (self.ActiveControl is tEdit)  then
  label2.Caption := tEdit(self.ActiveControl).Text ;

self er den aktuelle form-instans
mvh.
Avatar billede spil2vind Nybegynder
28. oktober 2009 - 12:22 #4
Forstår ikke at bruge ovenstående, men jeg har en process som kører hele tiden, og den skal gøre forskellige ting alt afhængig af om man er i den ene eller anden StrindGrid, så det jeg har brug for at vide, er om focus er på StringGrid 1 eller 2 f.eks.
Avatar billede a_nor Nybegynder
28. oktober 2009 - 13:07 #5
Så kan du vel spørge

if Stringgrid1.focused then
Avatar billede spil2vind Nybegynder
28. oktober 2009 - 13:26 #6
Det har du ret i, det er den nemme løsning, men vil gerne undgå dette, idet man så skal undersøge alle de komponenter der er på formen, så dit første forslag lignende noget af det jeg havde i tankerne, så hvis du kan hjælpe med det, er det super
Avatar billede a_nor Nybegynder
28. oktober 2009 - 13:44 #7
Hvad med at anvende TAG ?

f.eks:
case tComponent(activecontrol).Tag of
  1:;
  2:;
  else;

Så skal du bare sætte tag-get passende på dine komponenter.
Avatar billede spil2vind Nybegynder
28. oktober 2009 - 14:22 #8
Det ligner lidt af det med at checke alle komponenter som for  focused sand, håbede der var et nemt svar, som kunne give mig navnet på komponenten som er focused
Avatar billede a_nor Nybegynder
28. oktober 2009 - 14:52 #9
Nej, du anvender den der har fokus, og opbygger koden struktureret og overskuelig .... ?

du kan også anvende
string1 := tComponent(activecontrol).ClassName  eller
string1 := tComponent(activecontrol).Name ;

så har du klassen hhv navnet  ? ? ? ?
Avatar billede spil2vind Nybegynder
28. oktober 2009 - 19:01 #10
<a_nor>
Dine svar er meget rigtige, ville dog gerne høre om der er andre der har gode forslag?
Avatar billede js_delphi Nybegynder
30. oktober 2009 - 23:37 #11
Hvad er der galt med a_nor's forslag?

Eksempel:
2 Edits og en Button paa en form:

procedure TForm1.Button1MouseEnter(Sender: TObject);
begin
  if (self.ActiveControl.Name = 'Edit1') then
    ShowMessage('edit1');
  if (self.ActiveControl.Name = 'Edit2') then
    ShowMessage('edit2');
end;
Avatar billede spil2vind Nybegynder
03. november 2009 - 14:54 #12
Da der ikke er kommet nogen andre gode forslag, synes jeg du skal lægge et svar, så du a_nor kan få dine point
Avatar billede mbsnet Nybegynder
09. november 2009 - 09:37 #13
Smid en timer på form, dobbeltklik på den for at oprette event, indsæt kode:
procedure TForm1.Timer1Timer(Sender: TObject);
var aControl:tControl;
begin
if activeControl is tControl then begin
  aControl:=tControl(activeControl);
  caption:=aControl.name;
end else caption:='?'
end;
- men det er det samme som allerede er blevet sagt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester