Главная » FAQ [ Добавить вопрос ]

file_put_contents(«путь к файлу», »<текст>»);

Пример 1:

file_put_contents("C:/FileName.txt", "Text");

Пример 2:

file_put_contents("C:/FileName.txt", c("edit1")->text);

Подробней php.net 


$text = file_get_contents(«путь к файлу»);

Пример:
Код
$text = file_get_contents("C:/FileName.txt");  
print($text);

$file = file_exists(«путь к файлу»);

Пример:

$file = file_exists("C:/FileName.txt"); 
if($file){ 
 message("Файл найден!"); 
}else{ 
 message("Файл не найден"); 
} 

Подробней php.net 


rename(«путь к файлу/папке», »<путь к файлу/папке с новым именем>»);

Пример переименования файла:

rename("C:/FileName1.txt", "C:/NewFileName.txt");

Пример переименования папки:

rename("C:/FolderName", "C:/NewFolderName"); 

Подробней php.net 


unlink(«путь к файлу»);

Пример:

unlink("C:/FileName1.txt"); 

Подробней php.net 


mkdir («путь к папке»);

Пример:

mkdir("C:/FilderName"); 

Подробней php.net 


rmdir(«путь к папке»);

Пример:

rmdir("C:/FolderName");

Подробней php.net 


rename(«путь к файлу», »<путь к файлу с новым расширением>»);

Пример:

rename("C:/FileName.txt", "C:/FileName.php"); 

Подробней php.net 



Пример:

dir_search("C:/", $files, "", true, true); // загоняем найденные файлы в $files массив 
foreach ($files as $file){ // пробегаемся по массиву 
 if (strpos($file, 'name')!==false){ // функция поиска подстроки (name) в строке - strpos 
 c("listbox1")->items->add($file); // выводим в список найденные файлы 
 } 
}


if( !c("button1")->stat ){ 
 c("button1")->picture->assign(c("button2")->picture); // берём картинку из кнопки 2 
 c("button1")->stat = true; 
}else{ 
 c("button1")->picture->assign(c("button3")->picture); // берём картинку из кнопки 3 
 c("button1")->stat = false; 
}

c("checkbox1")->checked != c("checkbox1")->checked; 
c("spButton1")->enabled = c("checkbox1")->checked; 

if(c("openDlg1")->execute()) { 
 c("edit1")->text = c("openDlg1")->fileName;
}


Данный тип кнопки отличается от обычных тем, что не имеет фокуса (нет возможности выделить кнопку через tab).

Вставить следующий код в TEdit в событие «Клавиатура»:

if ( ! is_numeric( $key ) && $key <> chr(8) ){ 
 $key = chr(1); 
} 

обавляем image1 событие «Курсор на объекте» и пишем код:

c("image1")->picture->assign(c("image2")->picture); // берём картинку из изображения 2 

Добавляем image1 событие «Курсор вне объекта» и пишем код:

c("image1")->picture->assign(c("image3")->picture); // берём картинку из изображения 3 


Пример 1. Визуально, через свойства формы:

Выбираем форму, переходим на вкладку «Свойства», выбираем пункт настройки. В появившемся окне убираем галочки с не нужных кнопок (чекбоксы «закрыть», «свернуть», «развернуть»).

Пример 2. С помощью php кода:

Существуют следующие кнопки:

  • biSystemMenu - системного меню формы
  • biMinimize - свернуть
  • biMaximize - развернуть
  • biHelp - справка
c("Form1")->borderIcons = 'biSystemMenu'; 
// отобразит системное меню формы и кнопку закрыть
c("Form1")->borderIcons = 'biSystemMenu,biMinimize'; 
// отобразит системное меню окна, кнопку закрыть и кнопку свернуть
c("Form1")->borderIcons = 'biMinimize'; 
// не должно ничего отображать, т.к. отсутствует свойство biSystemMenu...


Пример:

pre( c("grid1")->row ); // индекс выделенной строки
pre( c("grid1")->col ); // индекс выделенной колонки

Пример изменения ширины столбца:

$index = 0; // номер колонки, начинается с 0,1,2... 
$w = 100; // ширина 
grid_colWidth(c("grid1")->self, $index, $w); // назначаем ширину колонки $index

Пример изменения высоты строки:

$index = 0; // номер строки, начинается с 0,1,2... 
$h = 40; // высота 
grid_rowHeight(c("grid1")->self, $index, $h); // назначаем высоту строке $index

Пример добавления строки перед строкой:

$grid = c("grid1");
$row = $grid->row;
$grid->rowCount += 1;
for($i = $grid->rowCount-1; $i > $row; $i--){
 $grid->rows($i, $grid->rows($i-1));
}
$grid->rows($row, array());

Пример добавления строки после строки:

$grid = c("grid1");
$row = $grid->row;
$grid->rowCount += 1;
for($i = $grid->rowCount-1; $i > $row; $i--){
 $grid->rows($i, $grid->rows($i-1));
}
$grid->rows($row+1, array());
$grid->row += 1;

Пример:

$grid = c("grid1"); 
$row = $grid->row; 
for($i = $row; $i < $grid->rowCount-1; $i++){ 
 $grid->rows($i, $grid->rows($i+1)); 
} 
$grid->rowCount -= 1;

Пример с дополнительным условием против удаления фиксированных строк:

$grid = c("grid1"); 
$index = $grid->row;
if($index >= $grid->fixedRows){ 
 if($grid->rowCount > $grid->fixedRows+1){ 
 for($i = $index; $i < $grid->rowCount-1; $i++){ 
 $grid->rows($i, $grid->rows($i+1)); 
 } 
 $grid->rowCount -= 1; 
 }else{ 
 $grid->rows($index, array()); 
 } 
}

Пример добавления столбца перед столбцом:

$grid = c("grid1"); 
$col = $grid->col; 
$grid->colCount += 1; 
for($i = $grid->colCount-1; $i > $col; $i--){ 
 $grid->cols($i, $grid->cols($i-1)); 
} 
$grid->cols($col, array());

Пример добавления столбца после столбца:

$grid = c("grid1"); 
$col = $grid->col; 
$grid->colCount += 1; 
for($i = $grid->colCount-1; $i > $col; $i--){ 
 $grid->cols($i, $grid->cols($i-1)); 
} 
$grid->cols($col+1, array()); 
$grid->col += 1;

Пример:

$grid = c("grid1"); 
$col = $grid->col; 
for($i = $col; $i < $grid->colCount-1; $i++){ 
 $grid->cols($i, $grid->cols($i+1)); 
} 
$grid->colCount -= 1;

Пример с дополнительным условием против удаления фиксированных столбцов:

$grid = c("grid1"); 
$index = $grid->col; 
if($index >= $grid->fixedCols){ 
 if($grid->colCount > $grid->fixedCols+1){ 
 for($i = $index; $i < $grid->colCount-1; $i++){ 
 $grid->cols($i, $grid->cols($i+1)); 
 } 
 $grid->colCount -= 1; 
 }else{ 
 $grid->cols($index, array()); 
 } 
}

Пример:

$grid = c("grid1"); 
for($y = 0; $y < $grid->rowCount; $y++){ 
 $grid->rows($y, array()); 
}

Или:

$grid = c("grid1"); 
for($x = 0; $x < $grid->colCount; $x++){ 
 $grid->cols($x, array()); 
}

Зададим значение любой ячейки, например ячейки 3×2, где 3 - столбец, 2 - строка:

c("grid1")->cells(3, 2, "Значение");

Зададим строке массив значений, например строке 4:

$array = array("Один", "Два", "Три"); 
c("grid1")->rows(4, $array);

Зададим столбцу массив значений, например столбцу 3:

$array = array("Один", "Два", "Три"); 
c("grid1")->cols(3, $array);


Создание компонента

В DevelStudio работать с компонентами приходится как с объектами: свойства компонентов (положение, габариты, их содержимое) представляются как свойства объектов.

 $edit = c("edit1");

Здесь $edit будет объектом (экземпляром класса) TEdit, имеющим свойства textaligncolorfont… и методы hideshowtoBacktoFront и т.д. 
В примере выше мы обращаемся к уже созданному компоненту, т.е. получаем в переменной $edit экземпляр класса TEdit, ссылающийся на нужный нам компонент. Как же создать компонент из кода? Очень просто! Рассмотрим на примере поля для ввода:

 // получаем объект формы
 $form = c('Form1');
 // создаём оъект TEdit (поле для ввода)
 $edit = new TEdit;
 // укажем родителя (объект TForm или TScrollBox)
 $edit->parent = $form;
 // зададим требуемые свойства
 $edit->x = 10; // позиция X
 $edit->y = 10; // позиция Y
 $edit->w = 120; // длина
 $edit->h = 20; // высота
 $edit->text = 'TEdit'; // текстовое значение поля
 $edit->cursor = crHandPoint; // курсор на компоненте
 $edit->hint = 'Подсказка'; // текст подсказки

После выполнения кода свежесозданный компонент TEdit появится на форме Form1.

Обработка событий

В DevelStudio существует несколько способов программного указания функциональной обработки событий компонентов:

Способ 1

Начиная с DevelStudio 3 можно указывать анонимную функцию:

 $fn=function ($id) {
 $edit=c($id);
 $edit->text='';
 alert('hello!');
 };
 
 $edit->onClick = $fn;

В этом случае в указанную функцию автоматически передаются параметры в зависимости от события:

  • onClick: $id
  • onDblClick: $id
  • onChange: $id
  • onResize: $id
  • onSelect: $id
  • onMouseUp: $id$button$shift$x$y
  • onMouseDown: $id$button$shift$x$y
  • onMouseMove: $id$shift$x$y
  • onKeyPress: $id$key
  • onKeyUp: $id$key$shift
  • onKeyDown: $id$key$shift

Параметр $id, передаваемый в функцию при любом событии, - это ID компонента, благодаря которому можно получить соответствующий объект:

// скрыть компонент при наведении на него курсора мыши
 $fn=function($id, $shift, $x, $y){
 $self = c($id);
 $self->hide();
 };
 
 $edit->onMouseMove = $fn;

Способ 2

Можно указать имя функции, вызываемой при срабатывании события:

 $edit->onClick = 'pre';

В указанную функцию автоматически передадутся параметры аналогично первому способу.

Способ 3

Можно указать практически любой произвольный код. Работает этот способ только в DevelStudio 2!

 $edit->onClick = 'for($i=3; $i>0; --$i) alert($i); alert("Yo!");'; // только DevelStudio 2

У этого способа есть особенность:

 $edit->onClick = 'for($i=3; $i>0; --$i) alert($i); alert("Yo!"); pre'; // только DevelStudio 2

В примере в функцию pre передастся параметр $id

Удаление компонента

Производится методом free()

 $edit = c('edit1');
 $edit->free();

:!: Внимание! Если вы не уверены, что всё делаете правильно лучше ничего не изменять в реестре, иначе это может привести к плохим последствиям и потери данных!

Сценарий работы с реестром!

  1. Открыть ключ
  2. Прочитать или записать данные
  3. Закрыть ключ



Какие бывают корневые ключи?

HKEY_CURRENT_USER - раздел содержит настройки текущего активного пользователя, вошедшего в систему.

HKEY_USERS - раздел содержит все активные загруженные профили пользователей компьютера. Раздел HKEY_CURRENT_USER является подразделом раздела HKEY_USERS.

HKEY_LOCAL_MACHINE - раздел содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей).

HKEY_CLASSES_ROOT - является подразделом HKEY_LOCAL_MACHINE\Software\Classes. В основном, содержит информацию о зарегистрированных типах файлов и объектах COM и ActiveX.

HKEY_CURRENT_CONFIG - раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы. Является ссылкой на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardwa re Profiles\Current.

HKEY_DYN_DATA - раздел имеется только в реестре ОС семейства Windows 9x/ME. Содержит динамически изменяемые данные о компьютере (загрузка процессора, размер файла подкачки и т. п.).



Как создать ключ?

$r = new TRegistry; 
$r->rootKey(HKEY_LOCAL_MACHINE); 
$r->CreateKey("\\SOFTWARE\\DevelStudio2010"); 



Как проверить наличие ключа?

$key = "DevelStudio2010"; 
 
$r = new TRegistry; 
$r->rootKey(HKEY_LOCAL_MACHINE); 
// второй параметр отвечает за то, создавать-ли ключ, если он не существует
$r->OpenKey("\\SOFTWARE", 0); 
 
if($r->KeyExists("$key")){ 
 message("Ключ $key найден!"); 
}else{ 
 message("Ключ $key не найден!"); 
} 
 
$r->CloseKey(); 



Как удалить ключ?

$r = new TRegistry; 
$r->rootKey(HKEY_LOCAL_MACHINE); 
$r->DeleteKey("SOFTWARE\\DevelStudio2010"); 



Как записать значение в ключ?

$r = new TRegistry;
$r->rootKey(HKEY_LOCAL_MACHINE);
// второй параметр отвечает за то, создавать-ли ключ, если он не существует
$r->OpenKey("\\SOFTWARE\\DevelStudio2010", 1);
 
$r->WriteString("Имя", "Значение"); 
 
$r->CloseKey(); 



Как проверить наличие значения в ключе?

$r = new TRegistry; 
$r->rootKey(HKEY_LOCAL_MACHINE); 
// второй параметр отвечает за то, создавать-ли ключ, если он не существует
$r->OpenKey("SOFTWARE\\DevelStudio2010", 0); 
 
if($r->ValueExists("DevelStudio2010")){ 
 message("Значение найдено!"); 
}else{ 
 message("Значение не найдено!"); 
} 
 
$r->CloseKey(); 



Как удалить значение из ключа?

$r = new TRegistry; 
$r->rootKey(HKEY_LOCAL_MACHINE); 
$r->OpenKey("SOFTWARE\\DevelStudio2010", 0); 
 
$r->DeleteValue("Имя"); 
 
$r->CloseKey(); 



Альтернативный поход

Чтение и запись ключей в реестре можно осуществить куда проще, используя функции readRegKey для чтения, и writeRegKey для записи:

mixed readRegKey ( $root, $path, &$buffer, $type )

mixed writeRegKey ( $root, $path, $value, $type ) 

Параметры:

  • $root - секция (корневой ключ)
  • $path - путь до ключа от указанной секции
  • $buffer - переменная, в которую будет записано значение
  • $type - тип (STRING, DATE_TIME, BOOL, DWORD, CURRENCY)
  • $value - записываемое значение

Примеры

Чтение ключа

readRegKey(HKEY_CLASSES_ROOT, '.exe\\Content Type', $x, STRING);
pre($x); // выведет "application/x-msdownload"

Запись ключа

$x='trololo';
writeRegKey(HKEY_CLASSES_ROOT, '.exe\\Custom Key', $x, STRING);

Чтение т.н. ключа «по умолчанию» :)

readRegKey(HKEY_CLASSES_ROOT, '.exe\\*', $x, STRING);
pre($x); // выведет "exefile"



Консоль Windows

Используя shell_exec, консольными командами можно производить большее количество операций с реестром, нежели чем представлено выше. Однако, это будет и сложнее.

Для ознакомления с консольными командами Windows, в командной строке пропишите:

reg /?

и следуйте дальнейшим инструкциям.

Пример

$str=shell_exec('REG QUERY "HKCU\\Volatile Environment"');
$str=iconv('CP866','CP1251',$str);// не забываем сменить кодировку
alert($str);


В буфер обмена

clipboard_setText( $text );

Пример 1:

clipboard_setText( c("memo1")->text );

Пример 2:

clipboard_setText( "text" );

Из буфера обмена

clipboard_getText( void );

Пример 1:

pre( clipboard_getText() );