Динамические данные формы доступа в symfony 4

Когда вы выполняете перетаскивание в элементе управления treeview, вам необходимо поддерживать некоторые функции автоматического прокрутки. Например, когда вы перетаскиваете элемент из видимого узла дерева, а узел дерева назначения находится за пределами текущего представления дерева, элемент управления должен автоматически прокручивать вверх или вниз в зависимости от направления мыши.

Элемент управления Windows Forms Treeview не включает встроенные функции для выполнения этого. Тем не менее, это довольно просто реализовать.

Шаг 1: Получите ваш код перетаскивания дерева древовидной структуры

Убедитесь, что ваш код перетаскивания древовидной структуры работает правильно без автопрокрутки. См. Разделы в этой папке для получения дополнительной информации о том, как реализовать перетаскивание в древовидной структуре.

Шаг 2: добавьте определение функции SendMessage

Чтобы рассказать о древовидной структуре для прокрутки вверх или вниз вам нужно вызвать функцию Windows API SendMessage (). Для этого добавьте следующий код в верхнюю часть вашего класса:

// Make sure you have the correct using clause to see DllImport:
// using System.Runtime.InteropServices;
 [DllImport("user32.dll")]
    private static extern int SendMessage (IntPtr hWnd, int wMsg, int wParam, 
        int lParam);

Шаг 3: Захват события DragScroll

В событии DragScroll определите, где находится курсор мыши по отношению к верхней и нижней части управления древовидной структурой. Затем вызовите SendMessage для прокрутки как подходящего.

// Implement an "autoscroll" routine for drag
//  and drop. If the drag cursor moves to the bottom
//  or top of the treeview, call the Windows API
//  SendMessage function to scroll up or down automatically.
private void DragScroll (
    object sender,
    DragEventArgs e)
{
    // Set a constant to define the autoscroll region
    const Single scrollRegion = 20;

    // See where the cursor is
    Point pt =  TreeView1.PointToClient(Cursor.Position);

    // See if we need to scroll up or down
    if ((pt.Y + scrollRegion) > TreeView1.Height)
    {
        // Call the API to scroll down
        SendMessage(TreeView1.Handle, (int)277, (int)1, 0);
    }
    else if (pt.Y < (TreeView1.Top + scrollRegion))
    {
        // Call thje API to scroll up
        SendMessage(TreeView1.Handle, (int)277, (int)0, 0);
}

Взято из здесь .

-1
задан kov 13 July 2018 в 10:06
поделиться

1 ответ

создать класс, который вам нужен после определения в классе формы

class ContactType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('name');
    $builder->add('price');
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => Content::class,
    ));
}
}

Следуйте за

$content = new Content();
$form = $this->createForm(ContactType::class, $content);
$form->handleRequest($request);
$formdata = $form->getData();

$content->getName();
$content->getOther();
...
0
ответ дан Deniz Aktürk 17 August 2018 в 13:11
поделиться
  • 1
  • 2
    эта строка $ formdata = $ form- & gt; getData () ;. он дает ассоциативный массив с именем и значениями поля. Мне просто нужно объединить эти значения, такие как $ concatenatedData = implode (& quot ;, & quot ;, array ("field_name1:". $ formdata ['value1'], "field_name2:". $ formdata ['value2') ); – kov 13 July 2018 в 11:46
  • 3
    он делает otomaticly match, form- & gt; createView () и использует в twig form_start (form), как это – Deniz Aktürk 13 July 2018 в 11:46
  • 4
  • 5
    если я сброшу $ formdata. он показывает ассоциативный массив. Я могу использовать foreach loop для отображения этих данных. но я хочу объединить эти значения, например, с помощью implode (). Как я могу это сделать ? – kov 13 July 2018 в 11:53
Другие вопросы по тегам:

Похожие вопросы: