⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit5.pas

📁 Dicom Delphi code 看DICOM图像
💻 PAS
字号:
unit Unit5;

interface

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

type
  TfrmDICOMDir = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    lstPatient: TListBox;
    Label2: TLabel;
    lstStudy: TListBox;
    Label3: TLabel;
    lstSeries: TListBox;
    Label4: TLabel;
    lstImage: TListBox;
    DICOMX1: TDICOMX;
    procedure Button1Click(Sender: TObject);
    procedure lstSeriesClick(Sender: TObject);
    procedure lstImageClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDICOMDir: TfrmDICOMDir;

implementation

{$R *.dfm}

procedure TfrmDICOMDir.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  DICOMX1.OpenDICOMDir := Edit1.Text;
  if DICOMX1.DICOMDirLastOpenSuccess=True then
  begin
    lstPatient.Clear;
    if DICOMX1.DICOMDirPatientName <> '' then
      lstPatient.Items.Append(DICOMX1.DICOMDirPatientName)
    else
      lstPatient.Items.Append('No Patient Name');

    lstStudy.Clear;
    if DICOMX1.DICOMDirStudyCount > 0 then
    begin
      for i := 1 to DICOMX1.DICOMDirStudyCount do
      begin
        DICOMX1.DICOMDirStudyPos := i;
        lstStudy.Items.Append(DICOMX1.DICOMDirStudyDateCurrent + ' , ' + DICOMX1.DICOMDirStudyTimeCurrent + ' , ' + DICOMX1.DICOMDirStudyDescriptionCurrent);
      end;
      DICOMX1.DICOMDirStudyPos := 1;
    end;

    lstSeries.Clear;
    if DICOMX1.DICOMDirSeriesCount > 0 then
    begin
      for i := 1 to DICOMX1.DICOMDirSeriesCount do
      begin
        DICOMX1.DICOMDirSeriesPos := i;
        lstSeries.Items.Append('[' + DICOMX1.DICOMDirSeriesModalityCurrent + '] (' + IntToStr(DICOMX1.DICOMDirSeriesImageCountCurrent) + ')Images , ' +
          DICOMX1.DICOMDirSeriesDateCurrent + ' , ' + DICOMX1.DICOMDirSeriesTimeCurrent + ' , ' + DICOMX1.DICOMDirSeriesDescriptionCurrent);
        DICOMX1.DICOMDirSeriesPos := 1;
      end;
    end;

    lstImage.Clear;
    if (DICOMX1.DICOMDirSeriesPos > 0) and (DICOMX1.DICOMDirSeriesImageCountCurrent > 0) then
    begin
      for i := 1 to DICOMX1.DICOMDirSeriesImageCountCurrent do
      begin
        DICOMX1.DICOMDirImagePos := i;
        lstImage.Items.Append(DICOMX1.DICOMDirImageFileTypeCurrent + ' , ' + DICOMX1.DICOMDirImageFileNameCurrent);
      end;
      DICOMX1.DICOMDirImagePos := 1;
    end;
  end;
end;

procedure TfrmDICOMDir.lstSeriesClick(Sender: TObject);
var
  i : Integer;
begin
  i := lstSeries.ItemIndex + 1;
  if (i < 1) Or (i > 16) then
    Exit
  else
    DICOMX1.DICOMDirSeriesPos := i;

  lstImage.Clear;
  if (DICOMX1.DICOMDirSeriesPos > 0) and (DICOMX1.DICOMDirSeriesImageCountCurrent > 0) then
  begin
    for i := 1 to DICOMX1.DICOMDirSeriesImageCountCurrent do
    begin
      DICOMX1.DICOMDirImagePos := i;
      lstImage.Items.Append(DICOMX1.DICOMDirImageFileTypeCurrent + ' , ' + DICOMX1.DICOMDirImageFileNameCurrent);
    end;
    DICOMX1.DICOMDirImagePos := 1;
  end;

end;

procedure TfrmDICOMDir.lstImageClick(Sender: TObject);
var
  sFileName : String;
  i : Integer;
begin
  i := lstImage.ItemIndex + 1;
  if (i < 1) Or (i > 128) then
    Exit
  else
    DICOMX1.DICOMDirImagePos := i;

  if DICOMX1.DICOMDirImageFileNameCurrent <> '' then
  begin
    if Pos('DICOMDIR',edit1.Text) = 0 then
    begin
      if RightStr(edit1.Text, 1) = '\' then
        sFileName := edit1.Text + DICOMX1.DICOMDirImageFileNameCurrent
      else
        sFileName := edit1.Text + '\' + DICOMX1.DICOMDirImageFileNameCurrent;
    end
    else
      sFileName := LeftStr(edit1.Text, Pos('DICOMDIR',edit1.Text) - 1) + '\' + DICOMX1.DICOMDirImageFileNameCurrent;

    if FileExists(Trim(sFileName)) then
      DICOMX1.OpenFileName := sFileName;
  end;
end;

procedure TfrmDICOMDir.FormCreate(Sender: TObject);
begin
  DICOMX1.ImageZoomBestFit := True;
end;

procedure TfrmDICOMDir.FormShow(Sender: TObject);
begin
  Edit1.SetFocus;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -