Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Aktuelle Cursorposition im RecordSet-Objekt auslesen? (https://www.delphipraxis.net/19331-aktuelle-cursorposition-im-recordset-objekt-auslesen.html)

mirko2000 1. Apr 2004 11:08


Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Wie kann ich die aktuelle Position des Cursors in einem Recordset auslesen?

Neuni 1. Apr 2004 11:14

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Mauskoordinaten lesen:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  MausPos: TPoint;
begin
  GetCursorPos(MausPos);
  label1.Caption := IntToStr(MausPos.x);
  label2.Caption := IntToStr(MausPos.y);
end;

Mausposition setzen:

Code:
procedure TForm1.Button2Click(Sender: TObject);
begin
  SetCursorPos(600, 600);
end;

mirko2000 1. Apr 2004 11:19

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Entweder hab ich mich jetzt falsch ausgedrückt oder du hast mich falsch verstanden:

Ich möchte wissen, welche Funktion mir die Nummer des aktuellen Datensatzes eines Recordsets zurückgibt!

Delphi-Quellcode:
uses ADOInt;

procedure TForm1.cmdVorClick(Sender: TObject);
begin
  rst.MoveNext;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdZurueck.Enabled:= True;

  if ???? >= AnzahlDatensaetze then
    begin
      cmdVor.Enabled := False;
    end;
end;

speedzisch 1. Apr 2004 11:22

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Delphi-Quellcode:
procedure PackTable(Table: TTable);
var
  FCurProp: CurProps;
  TblDesc: CRTblDesc;
  hDb: hDbiDB;
  TablePath: array[0..dbiMaxPathLen] of Char;
  Exclusive: Boolean;
begin
  if not Table.Active then
    _DBError(SDataSetClosed);
  Check(DbiGetCursorProps(Table.Handle, FCurProp));
  if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
    hDb := nil;
    FillChar(TblDesc, SizeOf(CRTblDesc), 0);
    with TblDesc do begin
      StrPCopy(szTblName, Table.TableName);
      StrCopy(szTblType, FCurProp.szTableType);
      bPack := True;
    end;
    Check(DbiGetDirectory(Table.DBHandle, False, TablePath));
    Table.Close;
    try
      Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite,
                            dbiOpenExcl, nil, 0, nil, nil, hDb));
      Check(DbiSetDirectory(hDb, TablePath));
      Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
      Check(DbiCloseDatabase(hDb));
    finally
      Table.Open;
    end;
  end
  else
    if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
      Exclusive := Table.Exclusive;
      Table.Close;
      try
        Table.Exclusive := True;
        Table.Open;
        try
          Check(DbiPackTable(Table.DBHandle, Table.Handle, nil,
                nil,True));
        finally
          Table.Close;
        end;
      finally
        Table.Exclusive := Exclusive;
        Table.Open;
      end;
    end
    else
      DbiError(DBIERR_WRONGDRVTYPE);
end;
[edit=Sharky]Delphi-Tags gesetzt! Mfg, Sharky[/edit]

Sharky 1. Apr 2004 11:32

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
@speedzisch: Was haben deine beiden Postings denn mit der Frage von mirko2000 zu tun? :shock:

neolithos 1. Apr 2004 11:35

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
@speedzisch: Möchte ich auch mal wissen

@mirko2000: AbsolutePosition, aber ich weiß nicht was du genau verwendest.

mirko2000 1. Apr 2004 12:32

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte, dass die Buttons "Vor" bzw. "Zurück" deaktiviert werden, wenn der erste bzw. letzte Datensatz erreicht ist.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    cmdErster: TButton;
    cmdZurueck: TButton;
    cmdVor: TButton;
    cmdLetzter: TButton;
    cmdEnde: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    txtBezeichnung: TEdit;
    txtFirma: TEdit;
    txtOrt: TEdit;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure cmdEndeClick(Sender: TObject);
    procedure cmdErsterClick(Sender: TObject);
    procedure cmdLetzterClick(Sender: TObject);
    procedure cmdZurueckClick(Sender: TObject);
    procedure cmdVorClick(Sender: TObject);
  private
    procedure AnzahlDS();
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  ADOInt;
var
  con: Connection;
  rst: Recordset;
  anzahl : Integer;

const
  erst = 0;
  zurueck = 1;
  vor = 2;
  letzt = 3;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

var
  strsql: String;

begin

  con:= CoConnection.Create;
  rst:= CoRecordset.Create;
  strsql:= 'SELECT * FROM HERSTELLER';
  con.Open('AutoVermittlung','','',-1);
  rst.Open(strsql, con, adOpenKeyset, adLockReadOnly, 1);

  rst.MoveFirst;
  cmdZurueck.Enabled:= False;
  txtBezeichnung.Text:= rst.Fields[1].Value;
  txtFirma.Text:= rst.Fields[2].Value;
  txtOrt.Text:= rst.Fields[5].Value;

  AnzahlDS();
end;

procedure TForm1.AnzahlDS();
begin
  anzahl := rst.RecordCount;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

rst.Close;
con.Close;
rst:= nil;
con:= nil;


end;

procedure TForm1.cmdEndeClick(Sender: TObject);
begin

  form1.Close;

end;

procedure TForm1.cmdErsterClick(Sender: TObject);
begin

  rst.MoveFirst;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdVor.Enabled := True;
  cmdZurueck.Enabled:= False;

end;

procedure TForm1.cmdLetzterClick(Sender: TObject);
begin

  rst.MoveLast;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdVor.Enabled := False;
  cmdZurueck.Enabled:= True;


end;

procedure TForm1.cmdZurueckClick(Sender: TObject);
begin

  rst.MovePrevious;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdVor.Enabled := True;

end;

procedure TForm1.cmdVorClick(Sender: TObject);
begin

  rst.MoveNext;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdZurueck.Enabled:= True;
 
end;

end.

sakura 1. Apr 2004 13:01

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Hinweis: Ich habe 3 der 4 Beiträge von speedzisch gelöscht, da alle sinnfrei vom Kontext standen. Einer ist zur Dokumentation noch dabei.

...:cat:...

neolithos 1. Apr 2004 13:12

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Was du eher verwenden solltest ist.

rst.BOF - Beginn of File
rst.EOF - End of File

mirko2000 1. Apr 2004 13:16

Re: Aktuelle Cursorposition im RecordSet-Objekt auslesen?
 
Zitat:

Zitat von neolithos
Was du eher verwenden solltest ist.

rst.BOF - Beginn of File
rst.EOF - End of File

Hab ich schon mal ausprobiert, funktioniert aber nicht:

Delphi-Quellcode:
procedure TForm1.cmdZurueckClick(Sender: TObject);
begin

  rst.MovePrevious;
  txtBezeichnung.Text := rst.Fields[1].Value;
  cmdVor.Enabled := True;

  if rst.BOF = true then
  begin
    cmdZurueck.enabled = false;
  end;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
Seite 1 von 2  1 2      

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