psa1974
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Maks150988 Чтобы не заморачиваться с типами, можно воспользоваться вариантом, предложенным ValidolX, только использовать не константу а переменную: Код: var i: Byte; MyArray: array [0..2] of HDC; begin // инициализация массива: MyArray[0]:= ptp.normalDC; MyArray[1]:= ptp.pressDC; MyArray[2]:= ptp.maskDC; // Использование: for I := 0 to 2 do IntToStr(MyArray[i]); // или, принимая во внимание, что индекс самого меньшего элеменат массива = 0, так (так ты не привязываешься к количеству элементов массива и если оно изменится, код все равно будет работать): for I := 0 to High(MyArray) do IntToStr(MyArray[i]); end; | Цитата: Я просто не знаю все возможности, стараюсь осваивать | Вот и повод освоить Добавлено: ValidolX Цитата: а самом деле меньше - 1 К (килобайт) | Точно, спасибо за поправку - зарапортовался Maks150988 глянул твой код, действительно, нормально а вот вариант с массивом: Код: var MyArray: array [0..2] of HDC; // где-то при инициализации элемента управления ты заполнил значениями элементы массива procedure Trackbar_SetBmpImage(hWnd: THandle; pszFilePath: PWideChar; IsImgThumb: Boolean; hdcIn: HDC; var iWidth, iHeight: Integer); var dc : HDC; himg, himgt: HBITMAP; i: Byte; begin dc := GetDC(hWnd); // himg := LoadImageW(0, pszFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if (himg <> 0) then begin // case IsImgThumb of TRUE: begin GetBitmapWidthHeightW(himg, iWidth, iHeight); iWidth := iWidth div 3; // for I := 0 to High(MyArray) do begin himgt := GetBitmapFromHbitmap(himg, i+ 1, iWidth, iHeight); if (himgt <> 0) then begin SelectObject(MyArray[i], himgt); DeleteObject(himgt); end; end; end; FALSE: begin GetBitmapWidthHeightW(himg, iWidth, iHeight); SelectObject(hdcIn, himg); end; end; // DeleteObject(himg); end; // ReleaseDC(hWnd, dc); end; |
| Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 23:48 09-11-2009 | Исправлено: psa1974, 00:16 10-11-2009 |
|