Delphi: Витрина без активации

Вам необходимо вернуть предмет, который должен быть обработан. Лучше всего будет создать новую функцию и вернуть элемент.

 _renderItem = (item, index) => {
    console.log(item, index);
    return (
      <View key={index}>
        <View>
          <Text>Time ago</Text>
          <Text>@username</Text>
        </View>

        <View>
          <Image
            source={{
              // uri:
              //   "https://source.unsplash.com/random/500x" +
              //   Math.floor(Math.random() * 800 + 500)

              uri: "https://source.unsplash.com/random/500x800/"
            }}
            style={styles.profilephoto}
          />
        </View>

        <View>
          <Text>Caption of post</Text>
          <Text>View all Comments</Text>
        </View>
      </View>
    )
  }

  render() {
    let i = 0;
    return (
      <View style={styles.container}>
        <View style={styles.header}>
          <Text> feed </Text>
        </View>        

        <FlatList
          refreshing={this.state.refresh}
          onRefresh={this.loadNew}
          data={this.state.photo_feed}
          keyExtractor={(item, index) => "" + index}
          style={styles.flatlist}
          renderItem={this._renderItem}
        />
      </View>
    );
  }
21
задан Daniel Rikowski 17 May 2010 в 08:48
поделиться

6 ответов

Должно быть что-то не так с Вашим кодом.

Я протестировал этот код, он работает:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowWindow(Form2.Handle, SW_SHOWNOACTIVATE);
  Form2.Visible := True;
end;

Старайтесь использовать Visible, нет Show ! Иначе это переопределит SW_SHOWNOACTIVATE.

29
ответ дан 29 November 2019 в 20:59
поделиться

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

procedure TMainForm.ButtonClick(Sender: TObject);
begin
  OtherForm.Show;
  SetFocus;
end;

Протестированный на 2006.

Это не показывает другую форму на вершине. Но это - самый счетчик, интуитивный, чтобы иметь окно на вершине, которая не имеет фокуса.

2
ответ дан 29 November 2019 в 20:59
поделиться

Я использовал это в прошлом

SetWindowPos(WindowHandle, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOMOVE);

Я не протестировал это с последними версиями Delphi хотя...

1
ответ дан 29 November 2019 в 20:59
поделиться

Если возможно, Вы должны, рассмотрел использование своего рода окна подсказки для отображения информации об уведомлении. Подсказка не украдет фокус от Вас главное окно, когда это будет отображено или когда пользователь нажимает на него. Регулярная форма будет иметь границу по умолчанию и если пользователь нажмет на ту границу, то Ваша основная форма освободит фокус.

Вот некоторый абсолютный код, чтобы сделать это. Подсказка исчезает, когда свободный назван; однако Вы были бы более обеспеченной установкой таймера, чем использование сна.

with THintWindow.Create(nil) do
  try
    ActivateHint(MyRect, 'My Notification');
    Sleep(DisplayTime);
  finally
    Free;
  end
1
ответ дан 29 November 2019 в 20:59
поделиться

Пожалуйста:

  // you have set your 2nd form as non resizable, without border nor title etc...
  Form2.Enabled := False; // prevent the 2nd form to grab focus even when clicked
  SetWindowPos(Form2.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOSIZE or SWP_NOMOVE);
  // be sure to hide it automatically when done as it is disabled...
1
ответ дан 29 November 2019 в 20:59
поделиться

Я сделал это в прошлом, но у меня нет кода, потому что это был propietary в последнем задании (извините).

Если я помню хорошо, что я сделал был:

  1. От клиента класс A называет процедуру (или функция), который не делает принадлежит любому классу (традиционный метод Паскаля).
  2. Из того метода назовите некоторый метод в классе B, который не наследовался TForm
  3. Из метода в B создайте экземпляр раскрывающейся формы P, но без родителя или владельца; и назовите метод в экземпляре.
  4. Из метода, названного в экземпляре, покажите себя.

Код (шага 3) мог пройти примерно так:

var p: TPopupForm;
begin
  p := TPopupForm.Create(nil);
  p.ShowWindow;
  p.Release;
end;

Я сожалею, если это не работает, у меня нет Delphi также.

1
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

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