Autor Beitrag
helmesb04
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 14:34 
hallo...
ich bin neu hier und habe eine frage
und zwar möchte ich, wenn man mein programm startet vorher erst sein benutzernamen und sein passwort von meiner website eingibt bevor er zum hauptprogramm kommt.

also so stell ich mir das vor:
ein kleines fenster mit: Loginname (dann ein editfeld), darunter Passwort (daneben editfeld) und unter den beiden sachen dann Login oder Abbrechen!
wenn man dann auf login klickt soll er logischer weise zum richtigen programm gehen ;)
und es soll auch ein Logout Button geben, um sich vom Hauptprogramm auszuloggen, allerdings, wenn man sich nicht ausloggt und das programm schließt und wieder öffnet soll man weiterhin eingeloggt bleiben ;)

ich hoffe ihr könnt mir helfen =)

dann noch eine kleine pupsfrage :D, wie kann ich tabs anlegen, so das sich wie beim firefox bei verschiedenen tabs die verschiedenen seiten öffnen?

danke =)
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 15:25 
keiner ne idee :P
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 15:28 
Hallo und :welcome: im Forum!

Für das Loginfenster erstellst du ein kleines neues Fenster mit den Logineingabefeldern (TEdit für den Benutzernamen, TMaskEdit für das Passwort z.B.). Das zeigst du dann z.B. in FormCreate deines Hauptformulars an. Wichtig dabei: Das Fenster darf nicht automatisch erstellt werden (Projekt --> Optionen --> Formulare), sondern das musst du selbst machen.

Und zu den Tabs: Neue Frage --> neues Thema im Forum!
Grundsätzlich musst du eben nicht nur das TabSheet auf dem PageControl neu erstellen (das du vermutlich benutzt) sondern auch die Darstellungskomponente (also vermutlich TWebBrowser).

// EDIT:
Schiebeposts sind laut den Richtlinien erst nach 24 Stunden erlaubt... :roll:
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 15:44 
Hey, danke für deine Antwort =)^^

und entschuldigung das ich das mit den tabs hier hin gepostet habe.

habe jetzt ein neues Formular erstellt und wie du erklärt hast das mit den Benutzernamen und dem Passwort erstellt, sowie ein "login" und ein "abbrechen" button erstellt

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:


Das zeigst du dann z.B. in FormCreate deines Hauptformulars an. Wichtig dabei: Das Fenster darf nicht automatisch erstellt werden (Projekt --> Optionen --> Formulare), sondern das musst du selbst machen.



das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig!

wie krieg ich das denn hin das wenn ich die benutzernamen und das passwort eingeben habe und auf login klicke zu Form 1 rüberspringt?
der benutzer soll ja auf meiner hp angemeldet sein, das muss man doch irgendwie abfragen oder?
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 31.05.09 15:50 
Naja, Du könntest doch zum Beispiel das so machen
(Das ist jetzt nur "so aus der Hand geschüttelt", also nicht überprüft):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Clipboard.SetText(LoginName);
ActiveControl.KeyDown(VK_TAB,shift);  
Clipboard.SetText(LoginPasswort);
ActiveControl.KeyDown(vk_enter,shift);
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 15:54 
mhm, aber das beantwortet ja eigtl immer noch nicht so richtig die frage, wenn ich

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Clipboard.SetText(LoginName);
ActiveControl.KeyDown(VK_TAB,shift);  
Clipboard.SetText(LoginPasswort);
ActiveControl.KeyDown(vk_enter,shift);


eingeben würde, dann wüsste das prog doch immer noch nicht ob die namen richtig oder falsch sind!?,
das prog muss das doch irgendwie von der website oder so abrufen können?
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 31.05.09 15:56 
Oh - ich habe Dich wohl missverstanden.
Ich dachte, dass Du ein Programm schreiben möchtest, welches automatisch im IE oder so den Login macht.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 31.05.09 15:57 
user profile iconhelmesb04 hat folgendes geschrieben Zum zitierten Posting springen:
das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig!

Nein, nicht ganz. Setze mal wieder Form1 als Hauptformular. Du sollst das automatische Erzeugen von Form2 verhindern. Dazu lässt du dir den Programmquelltext der Exe-datei anzeigen (Bei Turbo Delphi geht das mit Rechtsklick ->Quelltext anzeigen) und löscht dort das CreateForm(Form2, TForm2); einfach raus. Im Form1 erstellst du dann Form2 und lässt es per ShowModal anzeigen.
user profile iconhelmesb04 hat folgendes geschrieben Zum zitierten Posting springen:
wie krieg ich das denn hin das wenn ich die benutzernamen und das passwort eingeben habe und auf login klicke zu Form 1 rüberspringt?

In Form1 kannst du dann, wenn du ShowModal über das ModalResult der Buttons ausgewertest hast, einfach auf die Form2 Komponenten zugreifen.


Zuletzt bearbeitet von Regan am So 31.05.09 15:58, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 15:57 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Clipboard.SetText(LoginName);
ActiveControl.KeyDown(VK_TAB,shift);  
Clipboard.SetText(LoginPasswort);
ActiveControl.KeyDown(vk_enter,shift);
Was hat das jetzt damit zu tun? :gruebel:

user profile iconhelmesb04 hat folgendes geschrieben Zum zitierten Posting springen:
das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig!
Nein, du musst dein Hauptformular schon lassen, aber dein Loginformular darf in diesen Optionen nicht links in der Liste der automatisch erstellten Formulare stehen.

Was du dann in FormCreate deines Hauotformulars machst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  TfrmMain = class(TForm)
  ...
  private
    FUsername, FPassword: String;
  end;

...

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  frmLoginForm := TfrmLoginForm.Create(nil);
  try
    frmLoginForm.ShowModal; // Rückgabewert ggf. prüfen
    FUsername := frmLoginForm.edtUsername.Text;
    FPassword := frmLoginForm.edtPassword.Text;
  finally
    frmLoginForm.Free;
  end;
end;
Wobei frmMain das Hauptformular, frmLoginForm das Loginfenster und edtUsername und edtPassword darauf die Edits sind.

Danach kannst du dann Benutzername und Passwort überall im Programm in FUsername und FPassword verwenden.

// EDIT:
@user profile iconRegan: Das kann man ruhig in den Optionen verändern, man muss die automatische Erzeugung der Formulare nicht manuell korrigieren. :D
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 16:17 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := Form2.Create(nil);
  try
    Form2.ShowModal; // Rückgabewert ggf. prüfen
    FUsername := Form2.Edit1.Text;
    FPassword := Form2.MaskEdit1.Text;
  finally
    Form2.Free;
  end;
end;


habe das so eingetragen.

Wenn ich auf (projekt -> Quelltext anzeigen) gehe zeigt er das hier

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
program hallo;

uses
  Forms,
  hallo in 'hallo.pas' {Form1},
  Login in 'Login.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Zitat:
Dazu lässt du dir den Programmquelltext der Exe-datei anzeigen (Bei Turbo Delphi geht das mit Rechtsklick ->Quelltext anzeigen) und löscht dort das CreateForm(Form2, TForm2); einfach raus. Im Form1 erstellst du dann Form2 und lässt es per ShowModal anzeigen.
user profile iconhelmesb04 hat folgendes geschrieben Zum zitierten Posting springen:
wie krieg ich das denn hin das wenn ich die benutzernamen und das passwort eingeben habe und auf login klicke zu Form 1 rüberspringt?

In Form1 kannst du dann, wenn du ShowModal über das ModalResult der Buttons ausgewertest hast, einfach auf die Form2 Komponenten zugreifen.


das habe ich noch nicht ganz verstanden ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 16:19 
user profile iconhelmesb04 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
Form2 := TForm2.Create(nil);					
Mit Form2.Create versuchst du Create von der Instanz aufzurufen, das geht nicht, da noch keine existiert. ;-)
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 16:30 
okay :D, :roll: bin ich blöd^^. das fenster öffnet sich vor dem Form1 fenster =)...
wenn ich aber auf X klicke, also das fenster schließe, dann kommt das Form1 fenster,
und der button login geht noch nicht, hab ich vllt was überlesen??
aber ich frage mich immer noch... wie will der denn den benutzernamen und passwort kennen, wenn er keine "verbindung" zur seite hat?
der muss die doch irgndwie kennen oder irre ich mich?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 16:41 
Naja, du musst bei dem Loginbutton die Eigenschaft ModalResult auf mrOk setzen. Danach kannst du dann fragen
ausblenden Delphi-Quelltext
1:
2:
if Form2.ShowModal = mrOk then
...
um zu wissen, ob derjenige abgebrochen hat.
Das meinte user profile iconRegan vorhin. ;-)

Und danach liest du ja Benutzername und Passwort aus und musst es natürlich auch verwenden.
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 16:58 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und danach liest du ja Benutzername und Passwort aus und musst es natürlich auch verwenden.


ähm, ich weiß jetzt nicht ob ihr mich falsch verstanden habt oder ob ich jetzt etwas nicht verstehe^^
beim klicken auf login geht er zu Form1 über, aber auch wenn ich irgend blödsinn in die editfelder eingebe + login button, geht er zu form1 rüber.

das irritiert mich alles ein bisschen, weil das prog, bzw das login fenster doch auf die website zugreifen muss oder, wegen dem namen und dem pw?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 17:02 
Deshalb musst du nach der Anzeige des Loginfensters auch prüfen, ob derjenige Ok gedrückt hatte oder den Dialog abgebrochen hat (siehe oben), und dann musst du die Eingaben eben auch verarbeiten.
In meinem Beispielcode speichere ich die ja nur.

Und wenn der Login inkorrekt war, dann kannst du z.B. das Loginfenster wieder anzeigen, eine Meldung anzeigen, ...
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 31.05.09 17:02 
Hast du irgendwo in deinem Quelltext auch eine Überprüfung, ob der Login korrekt ist?
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 17:16 
nein hab ich nicht ... , wie soll der das denn auch wissen wenn ich keine verbindung zur website habe, das hab ich ja die ganze zeit gefragt, hab ja auch geschrieben das man einfach irgendn murks schreiben kann und er trotzdem weiterleitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 17:23 
Ja, das musst du nach der Anzeige des Loginfensters eben machen. Entweder asynchron mit TWebBrowser oder (da es sich um deine Webseite handelt wie du sagtest) besser per TIdHttp und einer speziellen Abfrageseite.

Das heißt du rufst per IdHttp eine bestimmte Seite ab, der du die Daten übergibst, und die gibt nur zurück, ob der Login erfolgreich war. Und dann hast du direkt das Ergebnis.

Wie das konkret aussieht, hängt stark davon ab, wie du auf Serverseite den Login realisierst, ob du TWebBrowser benutzt, Cookies, Referrerchecks, Skripte, ...
helmesb04 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: So 31.05.09 17:36 
uftata :D, das überschreitet jetzt aber meinen horizont^^ mit dem TIdHttp hatte ich noch nie was am hut...

Zitat:
Das heißt du rufst per IdHttp eine bestimmte Seite ab, der du die Daten übergibst, und die gibt nur zurück, ob der Login erfolgreich war. Und dann hast du direkt das Ergebnis.


gibt es irgendwie ein TUT oder hsat du ne ahnung wie sowas funktioniert? oder irgendjemand anderes?
also mit nem beispiel oder sowas, das mir das anschaulicher gemacht wird?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.05.09 17:40 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
uses
  IdHttp;

var
  HttpLoader: TIdHttp;
  PageContents: String;
begin
  HttpLoader := TIdHttp.Create;
  try
    PageContents := HttpLoader.Get('http://www.example.com/login.php?name=' + FUsername + '&pass=' + FPassword);
    if PageContents = 'erfolgreich' then
      ShowMessage('Login erfolgreich');
  finally
    HttpLoader.Free;
  end;
end;
Das ist natürlich sicherheitstechnisch nicht schön, aber für den Anfang...

Die Seite login.php auf dem Server müsste dann erfolgreich oder was anderes ausgeben als Antwort.