AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Andriod Virtuelle Tastatur löscht Frame
Thema durchsuchen
Ansicht
Themen-Optionen

Andriod Virtuelle Tastatur löscht Frame

Ein Thema von Shonsu · begonnen am 14. Jul 2014 · letzter Beitrag vom 15. Jul 2014
Antwort Antwort
Shonsu

Registriert seit: 16. Mai 2014
Ort: Braunschweig
6 Beiträge
 
Delphi XE6 Enterprise
 
#1

Andriod Virtuelle Tastatur löscht Frame

  Alt 14. Jul 2014, 17:04
Hallo Leute

Ich habe folgendes Problem:
Ich baue an einer Android-App und verwende dabei ein "Edit-Feld" in einem Frame. Wenn ich nun irgendetwas in das Feld mit der virtuellen Tastatur schreibe und mit "Return" bestätige löscht das immer gleich den ganzen Frame, und ich bin im Hauptfenster.
Wenn ich diesen wieder aufrufe, ist die Eingabe zwar vorhanden, aber weitere Aktionen hat er damit nicht ausgeführt.

Hat vllt. jemand eine Idee, wie ich das Verhalten der Tastatur verändere? Einfach den Frame in der Aktion neu starten geht auch nicht, da für ihn offenbar nach Tastatur schluß ist.

Vielen Dank im Vorraus.
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 14. Jul 2014, 17:58
... ein "Edit-Feld" in einem Frame...
Frame?

Das musst Du genauer erklären...

Mavarik
  Mit Zitat antworten Zitat
Shonsu

Registriert seit: 16. Mai 2014
Ort: Braunschweig
6 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 09:58
Nun ich benutze das Standard-Element "Frame" um in diesem ein Unit: TFrame6 = class(TFrame) anzuzeigen. Um damit einige Elemente zusammenzufassen und mit Variablen und Prozeduren zu versehen um sie anzuzeigen ohne ein neues Formular zu erstellen.

Das Frame liegt über der ganzen Form und wird bei Benutzung mit Daten gefüllt und sichtbar gemacht.

Ich habe hier mal etwas "reduzierten" Code angegeben, (also bitte nicht wundern wenn vllt. etwas zu viel ist oder vllt. eine Elementdefinition fehlt). Aber die anderen Elemente funktionieren sauber.

Es kommt mir auf die Prozeduren: "EdCodeChange(Sender: TObject)" und "Frame61EdCodeChange(Sender: Tobject)" an. (Nach meiner erfahrung reicht eine ich hab aber beide getestet) Sie sollen reagieren wenn sich der Text im Feld "EdCode" ändert.
Wozu es aber nicht kommt da wenn ich mit der Tastatur etwas in EdCode schreibe und mit Return bestätige oder die Eingabe abbreche sich der Frame schließt.
Delphi-Quellcode:
unit Unit6;

interface

uses
  Systems... und FMX...

type
  TFrame6 = class(TFrame)
    BtnLoeschen: TButton;
    BtnBestaetigen: TButton;
    EdCode: TEdit;
    ...
    procedure BtnLoeschenClick(Sender: TObject);
    procedure EdCodeChange(Sender: TObject);
  
  private
    FTitel: string;
    FMulti: Boolean;
    FUser: TObject;
    
  public
    property User: TObject read FUser write FUser;
    property Multi: Boolean read FMulti write FMulti;

    procedure gridsBefuellen(listeC1: TStringList; listeB1: TStringList; listeC2: TStringList; listeB2: TStringList);
  end;

implementation

procedure TFrame6.gridsBefuellen(listeC1: TStringList; listeB1: TStringList; listeC2: TStringList; listeB2: TStringList);
  var
  ...
  begin
    ...
end;

procedure TFrame6.BtnLoeschenClick(Sender: TObject);
begin
  EdCode.Text := '2';
  EdCode.Text := '';
end;

procedure TFrame6.EdCodeChange(Sender: TObject);
var
  ...
begin
  ...
end;

end.
Delphi-Quellcode:
unit Main_FMApp;

interface

uses
  system... fmx... UNIT6

type
  TForm6 = class(TForm)
    BtnStatus: TButton;
    BtnProjekt: TButton;
    Frame61: TFrame6;
        
    procedure FormCreate(Sender: TObject);
    ...
    procedure FillFrame(Sender: TObject);
    procedure Frame61BtnBestaetigenClick(Sender: TObject);
    procedure Frame61EdCodeChange(Sender: TObject);

var
  Form6: TForm6;

implementation

procedure TForm6.FormCreate(Sender: TObject);
begin
   ...
  Frame61.Visible := False;
  Frame61.Enabled := False;
end;

// Testabfrage ist der Frame aktiviert, wenn ja deaktiviert die "Tablet-Rückfunktion"
// den Frame, andernfalls arbeitet sie normal und verlässt das Programm
procedure TForm6.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if Frame61.Visible = True then
    begin
      Frame61.Visible := False;
      Key := 0;
    end
  else Key := 1;
end;

procedure TForm6.Frame61EdCodeChange(Sender: TObject);
var
   ...
begin
   ...
  if Frame61.User = BtnProjekt then
  begin
   ...
   end;

  if Frame61.User = BtnStatus then
  begin
    ...
  end;
 
  Frame61.Visible := true;
  Frame61.Enabled := true;
end;

//Füllen des Frames für die Projektwahl und Anzeige desselben.
procedure TForm6.BtnProjektClick(Sender: TObject);
begin
    FillFrame(Sender);
    Frame61.Visible := true;
    Frame61.Enabled := true;
end;

//Füllen des Frames für die Statuswahl und Anzeige desselben.
procedure TForm6.BtnStatusClick(Sender: TObject);
begin
    FillFrame(Sender);
    Frame61.Visible := true;
    Frame61.Enabled := true;
end;

procedure TForm6.FillFrame(Sender: TObject);
var
  ...
begin
   ...
  if Sender = BtnProjekt then
    begin
      Frame61.setTitel('Projekt');
      Frame61.Multi := False;
      ...
    end;

  if Sender = BtnStatus then
    begin
      Frame61.SetTitel('Status');
      Frame61.Multi := True;
      ...
   end;

  Frame61.User := Sender;
  ...
end;

end.
PS. Ich bin hier noch nicht so lange dabei und weiss nicht was üblich ist und hoffe daher ich habs mit dem Code nicht übertrieben.
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 11:13
Wozu es aber nicht kommt da wenn ich mit der Tastatur etwas in EdCode schreibe und mit Return bestätige oder die Eingabe abbreche sich der Frame schließt.
Delphi-Quellcode:
// Testabfrage ist der Frame aktiviert, wenn ja deaktiviert die "Tablet-Rückfunktion"
// den Frame, andernfalls arbeitet sie normal und verlässt das Programm
procedure TForm6.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if Frame61.Visible = True then
    begin
      Frame61.Visible := False;
      Key := 0;
    end
  else Key := 1;
end;
hmm Testabfrage?

Bei jedem Keyup ist das Frame weg!
Und dieser wird eben bei Return ausgelößt...

Mavarik
  Mit Zitat antworten Zitat
Shonsu

Registriert seit: 16. Mai 2014
Ort: Braunschweig
6 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 13:12
Eigentlich ist die Testabfrage als Schutz gedacht. Fall jmd. aus dem Frame ohne Daten zu speichern herauswill, nimmt man ja bei einer App meistens die 'KeyUp'-Funktion. Ein besonderer "Zurück"-Button wie im normalen Formular wird in der Regel ignoriert. Und so wollte ich bei KeyUp, fals der Frame offen ist, nur den Frame schließen. Sonst geht der mir ganz aus der App.

Gibt es denn eine Möglichkeit Festzustellen ob der 'KeyUp' von der zugehörigen Taste oder von der Tastatur ausgelöst wurde?
Carsten
"Erst wenn der letzte Programmierer eingesperrt und die letzte Idee patentiert ist, werdet ihr merken, daß Anwälte nicht programmieren können."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 13:58
von der zugehörigen Taste oder von der Tastatur ausgelöst wurde?
Zugehörige Taste?

Ach so Du meinst einen Hardware Key?

Nutze ich nicht, da es sowas auf iOS nicht gibt... (Außer der Home Button)

Google hilft...

if Key = vkHardwareBack then

Mavarik
  Mit Zitat antworten Zitat
Shonsu

Registriert seit: 16. Mai 2014
Ort: Braunschweig
6 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 14:44
Vielen Dank erstmal für die Hilfe.

Ich meinte einen Hardware-Key der eben nur eine Form zurückspringt und nicht ganz in das Home-Menü des Tablets.

Aber ich hab ihn jetzt ausgetrickst, ich frag einfach ab ob der Focus noch auf dem Edit-Feld liegt, den setzt er nämlich nicht auf die Tastatur.
Zwar muss man die dann noch extra löschen, aber das stört nur minimal.
Carsten
"Erst wenn der letzte Programmierer eingesperrt und die letzte Idee patentiert ist, werdet ihr merken, daß Anwälte nicht programmieren können."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Andriod Virtuelle Tastatur löscht Frame

  Alt 15. Jul 2014, 18:53
Ich meinte einen Hardware-Key der eben nur eine Form zurückspringt und nicht ganz in das Home-Menü des Tablets.
Ja... s.o. das ist der!
Android-Back Button
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz