Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Formular wird nicht sichtbar?


D. Annies - Sa 05.04.08 20:46
Titel: Formular wird nicht sichtbar?
Hi, Delpher,

ich habe folgenden Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.DBGrid4CellClick(Column: TColumn);
begin
  if (datasource4.DataSet = QBuchstamm) then
    ebuchtitel.Text := QBuchstamm.fieldbyname('Titel').asstring;
  if column = dbgrid4.Columns.items[10then Buchansehen1Click(Self);
end;

procedure TForm1.Buchansehen1Click(Sender: TObject);
begin                                         //740
  form3.Visible := true; form3.SetBounds(screen.Width-290,90,290,400);
  form3.image1.setbounds(10,10,265,350); form3.Image1.Visible := true;
  form3.Image1.Hint := 'Vergrößern mit <Klick>';
  tname := concat(label30.caption, 'Bildb\',QBuchstamm.fieldbyname('TITEL').asstring,'.jpg');    //DBText1.caption
  if fileexists(tname) and (QBuchstamm.FieldByName('D').AsString = '-'then lade_buchstamm(self);
  if not fileExists(tname) then tname := label30.caption+'Bildb\nocover.bmp';
  form3.image1.picture.loadfromfile(tname);
  form3.Caption := extractfilename(tname);
  if extractfilename(tname) = 'nocover.bmp' then
  begin
    if MessageDlg('Soll ein Bild geladen und eingefügt werden? ',
       mtConfirmation, [mbYes, mbNo], 0) = mrYes then Img2Cb(AImage);   
  end
end;

procedure TForm1.Img2Cb(AImage: TImage);
begin
  if form3.OpenPictureDialog1.Execute then
    form3.Image1.Picture.LoadFromFile(form3.OpenPictureDialog1.FileName);
end;


Beim ersten Mal anklicken der 10. Spalte öffnet sich auch das Formular und zeigt das Bild, wenn vorhanden, an - auch beim zweiten, dritten Mal etc. Aber wenn ich nach dem ersten Mal zunächst auf eine andere als die 10. Spalte geklickt habe, wird das Formular beim zweiten oder dritten Mal anklicken der 10. Spalte nicht mehr sichtbar.

Woran könnte das liegen?

Danke für Hilfe,
Detlef

P.S.
ich habe jetzt die obere Prozedur geändert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.DBGrid4CellClick(Column: TColumn);
begin
  if (datasource4.DataSet = QBuchstamm) then
    ebuchtitel.Text := QBuchstamm.fieldbyname('Titel').asstring;
  if DBGrid4.Columns.Items[Column.Index].FieldName = 'D' then Buchansehen1Click(Self);
end;


Jetzt gehts --- aber warum??
Gruß, Detlef


LexXis - So 06.04.08 05:05

Ich konnte jetzt Deiner Klick-History nicht ganz folgen, aber mir is folgendes aufgefallen:


Delphi-Quelltext
1:
column = dbgrid4.Columns.items[10]                    

Damit fragst du die elfte (!) Spalte ab, nicht die zehnte, da die Durchnummerierung bei 0 statt bei 1 anfängt!


LexXis - So 06.04.08 05:05

Ich konnte jetzt Deiner Klick-History nicht ganz folgen, aber mir is folgendes aufgefallen:


Delphi-Quelltext
1:
column = dbgrid4.Columns.items[10]                    

Damit fragst du die elfte (!) Spalte ab, nicht die zehnte, da die Durchnummerierung bei 0 statt bei 1 anfängt!


D. Annies - So 06.04.08 09:09

Hi, LexXis,

ist schon klar, ich wollte auch erst (11. Spalte) in Klammern dazusetzen, habe es aber vergessen. Es ist natürlich die 11.Spalte, aber der Sachverhalt bleibt der gleiche.

Danke für deinen Hinweis, Detlef

P.S.: Ich habe nochmal nachgezählt: Es war doch Columns[9], die zehnte - nicht Columns[10], die 11. - OBERPEINLICH!! :oops: :oops: :oops: