Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 22
Благодарности: 1

Профиль | Отправить PM | Цитировать



Окно.jpg в этой форме скрыта кнопка обзор
подскажите как удлинить поле ввода (по жирной стрелке)

[code]
Код: Выделить весь код
var
cbDrive: TComboBox;
DrvLetters: array of string;
FreeSpaceLabel: TLabel;

function GetDriveType(lpDisk: string): integer;
external 'GetDriveTypeA@kernel32.dll stdcall';

function GetLogicalDriveStrings(nLenDrives: LongInt; lpDrives: string): integer;
external 'GetLogicalDriveStringsA@kernel32.dll stdcall';

const
DRIVE_UNKNOWN=0;
DRIVE_NO_ROOT_DIR=1;
DRIVE_REMOVABLE=2;
DRIVE_FIXED=3;
DRIVE_REMOTE=4;
DRIVE_CDROM=5;
DRIVE_RAMDISK=6;

function DriveTypeString(dtype: integer): string;
    begin
      case dtype of
      DRIVE_NO_ROOT_DIR: Result:='Неверный путь';
      DRIVE_REMOVABLE: Result:='Съемный';
      DRIVE_FIXED: Result:='Фиксированный';
      DRIVE_REMOTE: Result:='Сетевой';
      DRIVE_CDROM: Result:='CD-ROM';
      DRIVE_RAMDISK: Result:='Ram диск';
      else
      Result:='Неизвестный';
    end;
end;

procedure cbDriveOnClick(Sender: TObject);
  begin
    WizardForm.DirEdit.Text:=DrvLetters[cbDrive.ItemIndex]+'My Prog';
  end;

procedure FillCombo();
var
  n: integer;
  drivesletters: string; lenletters: integer;
  drive: string;
  disktype, posnull: integer;
  sd: string;
begin
  sd:=UpperCase(ExpandConstant('{sd}'));
  drivesletters:=StringOfChar(' ', 64);
  lenletters:=GetLogicalDriveStrings(63, drivesletters);
  SetLength(drivesletters, lenletters);
  drive:='';
  n:=0;
  while ((Length(drivesletters) > 0)) do
    begin
      posnull:=Pos(#0, drivesletters);
      if posnull > 0 then
        begin
          drive:=UpperCase(Copy(drivesletters, 1, posnull-1));
          disktype:=GetDriveType(drive);
          if ( not ( disktype = DRIVE_CDROM ) ) then
            begin
              cbDrive.Items.Add(drive+DriveTypeString(disktype))
              SetArrayLength(DrvLetters, N+1);
              DrvLetters[n]:=drive;
              if (Copy(drive, 1, 2)=sd) then cbDrive.ItemIndex:=n;
              n:=n+1;
            end
          drivesletters:=Copy(drivesletters, posnull+1, Length(drivesletters));
        end
    end;
  cbDriveOnClick(cbDrive);
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
  Path: string;
  FreeMB, TotalMB: cardinal;
    begin
      Path:=ExtractFileDrive(WizardForm.DirEdit.Text);
      GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
      if FreeMB > 1024 then
      FreeSpaceLabel.Caption:='Свободно на диске: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
      else
      FreeSpaceLabel.Caption:='Свободно на диске: ' + IntToStr(FreeMB) + ' MB'
    end;

procedure InitializeWizard();

begin
      cbDrive:=TComboBox.Create(WizardForm.SelectDirPage);
      FreeSpaceLabel:=TLabel.Create(WizardForm);
      with cbDrive do
        begin
          Parent:=WizardForm.DirEdit.Parent;
          Left:=WizardForm.DirEdit.Left;
          Top:=WizardForm.DirEdit.Top+WizardForm.DirEdit.Height*2-15;
          Width:=WizardForm.DirEdit.Width+82;
          Style:=csDropDownList;
        end
      with FreeSpaceLabel do
        begin
          Parent:=WizardForm.SelectDirPage;
          Left:=ScaleX(0);
          Top:=Scaley(195);
          Width:=ScaleX(209);
          Height:=ScaleY(13);
        end;
    WizardForm.DirBrowseButton.Visible:=False;
    WizardForm.DirEdit.Enabled:=true;
    WizardForm.DirEdit.OnChange:=@GetFreeSpaceCaption;
    WizardForm.DirEdit.Text:=WizardForm.DirEdit.Text+#0;
    FillCombo;
    cbDrive.OnClick:=@cbDriveOnClick;
end;

Последний раз редактировалось us_ov, 08-08-2015 в 15:56.


Отправлено: 15:48, 08-08-2015 | #870